ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1841|回复: 15

[已解决] 关于----清除不可见字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-7-23 09:26 | 显示全部楼层 |阅读模式
本帖最后由 lingyuncelia 于 2017-7-24 10:24 编辑

1.png
如上图示,想清除A列的不可见字符,运行以下代码:
Sub 清除不可见字符()
For Each Rng In ActiveSheet.UsedRange

    For i = 3 To 15
        Rng.Replace ChrW(i), ""
    Next
    For i = 28 To 32
       Rng.Replace ChrW(i), ""
    Next
    For i = 127 To 254
        Rng.Replace ChrW(i), "        "
    Next

Next
End Sub

运行一次后,居然有如下结果,不少反多,变22位了,但很奇怪,为什么会这样,而且只有C2居然无变。
2.png
再运行一次,成功了
3.png
只有对第3个表是这样,其它两个表运行一次就OK了。
这个表曾经在论坛由其他人发表过,原来代码是:
Sub  清选定区不可见字符()
'原理:代码值(用CODE函数得到)在1-255范围内的字符中,有1-15,28-32,127-254共148个不可见字符。
Set rngs = Intersect(ActiveSheet.UsedRange, Selection)
    For i = 3 To 15  '代码值1-15不可见字符((选1,2时清空))
        rngs.Replace ChrW(i), ""
    Next
    For i = 28 To 32  '代码值28-32不可见字符
        rngs.Replace ChrW(i), ""
    Next
    For i = 127 To 254 '代码值127-254不可见字符
        rngs.Replace ChrW(i), ""
    Next
End Sub

但轮到我来运行,系统提示:
运行时错误‘91’
对象变量或With块变量未设置

为什么会这样,论坛上很多人跟帖的,难道用这个代码都成功了,都无报错?

批量删除不可见字符处理实例.zip

25.91 KB, 下载次数: 22

TA的精华主题

TA的得分主题

发表于 2017-7-23 10:22 | 显示全部楼层
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2017-7-23 10:48 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

发表于 2017-7-23 11:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
的确很奇怪,我运行此代码,没有变化呀
是不是需要在引用中勾选什么项目呀?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-23 13:03 | 显示全部楼层

4.png
真奇怪,你成功,我失败,而且不明白为什么中文都变乱码了?
哪位大神能解释?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-23 13:04 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-23 13:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
APPLE123 发表于 2017-7-23 11:54
的确很奇怪,我运行此代码,没有变化呀
是不是需要在引用中勾选什么项目呀?

不需要,反正很奇怪就是了

TA的精华主题

TA的得分主题

发表于 2017-7-23 13:17 | 显示全部楼层
本帖最后由 duquancai 于 2017-7-23 13:29 编辑

举个例子:楼下代码删除A列中不可见字符!!!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

TA的精华主题

TA的得分主题

发表于 2017-7-23 13:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lingyuncelia 发表于 2017-7-23 13:05
不需要,反正很奇怪就是了

Sub 清除不可见字符()
    Set D = CreateObject("htmlfile"): Set W = D.parentWindow
    W.execScript "function f(s){var a=s.replace(/[^a-z0-9]+/gi,'');return function(){return(a)}}"
    arr = ActiveSheet.UsedRange
    For i = 2 To UBound(arr)
        Cells(i, 1) = W.eval("a=f('" & arr(i, 1) & "');a()")
        W.execScript "a=null"
    Next
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-7-23 13:24 | 显示全部楼层
lingyuncelia 发表于 2017-7-23 13:05
不需要,反正很奇怪就是了

反向思维:用正则查找替换不可见的字符(不管它 不不可见字符到底是什么),不就OK了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 11:25 , Processed in 0.051230 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表