ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何实现让查找到的字符、只处以被选中的状态?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-11-28 11:20 | 显示全部楼层
duquancai 发表于 2016-11-27 20:32
可测试下面代码,不过意义不大!!!

哈哈!duquancai 兄厉害啊,这样的方法也让你发现了。[赞]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-28 12:37 | 显示全部楼层
本帖最后由 13907933959 于 2016-11-28 15:29 编辑

前辈好!
刚测试了,准确无误!
前辈、测试中发现还有一个现象,如段尾是中文标点结尾的,(如:中文句号、问号、感叹号、……)前面的英文符号(如:右括号)则不能被选中。前辈有不有办法让这个也能选中?
有劳前辈了!

TA的精华主题

TA的得分主题

发表于 2016-11-28 12:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2016-11-28 12:37
前辈好!
刚测试了,准确无误!
前辈、测试中发现还有一个现象,如段尾是中文标点结尾的,(如:中文句 ...

本来这种情况就排除在外了!当然不能选中

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-28 15:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-11-28 12:56
本来这种情况就排除在外了!当然不能选中

前辈好!
抱歉!是我描述的有问题,我是说,文档中有中英文混合标点的,如:中文句号、问号、感叹号、省略号、……前面有英文符号的(如:英文右括号……等)则不能被选中。前辈有不有办法让这个英文符号也能选中?

TA的精华主题

TA的得分主题

发表于 2016-11-28 21:00 | 显示全部楼层
杜先生好!139好!其他朋友好!——杜先生 辛苦了!写了不少代码。但代码似有缺陷,同时,我和我徒弟139犯了同样的错误,没写明需求,需求就是:把汉字中间夹杂的半角英文标点变为全角中文标点。
请 杜先生 再看看,我提供一下附件(杜先生 千万不要累着,真心感谢!)
附件: 习近平总书记提出的.rar (2.55 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

发表于 2016-11-28 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2016-11-28 21:00
杜先生好!139好!其他朋友好!——杜先生 辛苦了!写了不少代码。但代码似有缺陷,同时,我和我徒弟139犯 ...
  1. Sub HalfToFull()
  2.    Dim S As Range, P As Range
  3.    Set P = ActiveDocument.Content
  4.    With P.Find
  5.       Do While .Execute("[一-﨩^13^11][^1-^47^58-^62^91-^96^123-^127\?\@]@[一-﨩^13^11]", MatchWildcards:=True)
  6.          Set S = .Parent.Duplicate
  7.          .Parent.Collapse 0
  8.          With S.Find
  9.             Do While .Execute("[!一-﨩^13^11]{1,}", MatchWildcards:=True)
  10.                If .Parent.Start > P.End Then Exit Do
  11.                .Parent.CharacterWidth = wdWidthFullWidth
  12.                .Parent.Collapse 0
  13.             Loop
  14.          End With
  15.       Loop
  16.    End With
  17. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-11-29 13:01 | 显示全部楼层
413191246se 发表于 2016-11-28 21:00
杜先生好!139好!其他朋友好!——杜先生 辛苦了!写了不少代码。但代码似有缺陷,同时,我和我徒弟139犯 ...
  1. Sub HalfToFull()
  2. '   “汉字之间的英文标点”或者“回车符与汉字之间的英文标点”或者“汉字与回车符之间的英文标点”或者“两个回车符之间的英文标点”且只有1个符号
  3. '   如果两者之间存在多个英文标点,请进行修改程序“二重查找替换!”
  4.    Dim d, x, y, k, t, i%, j%
  5.    x = Array(",", ":", "?", ";", "!", ".") '英文符号枚举
  6.    y = Array(",", ":", "?", ";", "!", "。") '必须对应英文符号的中文符号枚举
  7.    Application.ScreenUpdating = False
  8.    Set d = CreateObject("Scripting.Dictionary")
  9.    For i = 0 To UBound(x)
  10.       d(x(i)) = y(i)
  11.    Next
  12.    k = d.keys: t = d.items
  13.    For j = 0 To d.Count - 1
  14.       With ActiveDocument.Content.Find
  15.          .ClearFormatting
  16.          .Replacement.ClearFormatting
  17.          .Text = "([一-﨩^13^11])" & k(j) & "([一-﨩^13^11])"
  18.          .MatchWildcards = True
  19.          .Replacement.Text = "\1" & t(j) & "\2"
  20.          .Execute Replace:=wdReplaceAll
  21.       End With
  22.    Next
  23.    Application.ScreenUpdating = True
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-29 14:58 | 显示全部楼层
本帖最后由 13907933959 于 2016-11-29 15:16 编辑
前辈好!
我和我师傅的要求不同,因30楼的代码不能选中,中文标点前的英文符号(如:“模拟附件”中红色英文右括号……等),我是想请前辈修改一下30楼的代码,当文档中有中英混合标点符号,让中文标点前面的英文符号也能选中,不知可否?

模拟附件:.rar

4.19 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2016-11-29 20:22 | 显示全部楼层
杜先生 好!辛苦了!第一段代码对于小数点(英文句点)变为全角还是实心的;第二段代码中英标点一一对应就好了!以后我还得多留心采集示例文本才好,多谢!

TA的精华主题

TA的得分主题

发表于 2016-12-4 21:40 | 显示全部楼层
杜先生:我决定选用第二个代码,测试也是如此,比第一个代码快了很多,我略改了一下半角符号的顺序。我有一个新要求:请再完善一下下面的代码(有示例文本),让“联系电话:261-7523“后面的半角冒号变为全角就OK了!还有,请再加一句让各个替换后的标点变红色的代码,我不知怎么加,辛苦,谢谢!
  1. Sub 替换半角标点为全角()
  2. 'code by duquancai
  3.     Dim d, x, y, k, t, i%, j%
  4.     x = Array(".", ",", ";", ":", "!", "?")
  5.     y = Array("。", ",", ";", ":", "!", "?")
  6.     Application.ScreenUpdating = False
  7.     Set d = CreateObject("Scripting.Dictionary")
  8.     For i = 0 To UBound(x)
  9.         d(x(i)) = y(i)
  10.     Next
  11.     k = d.keys: t = d.items
  12.     For j = 0 To d.Count - 1
  13.         With ActiveDocument.Content.Find
  14.             .ClearFormatting
  15.             .Replacement.ClearFormatting
  16.             .Text = "([一-﨩^13^11])" & k(j) & "([一-﨩^13^11])"
  17.             .MatchWildcards = True
  18.             .Replacement.Text = "\1" & t(j) & "\2"
  19.             .Execute Replace:=wdReplaceAll
  20.         End With
  21.     Next
  22.     Application.ScreenUpdating = True
  23. End Sub
复制代码

*** 示例文本:
今年,在干部廉洁自律工作方面;将重点抓好思想道德和纪律教育.切实抓好八项要求的落实!中华人民共和国?节约经费3,457.06元,花费45,562.73元.
联系电话:261-6375
句号.逗号,分号;冒号:叹号!问号?开会时间,早8:30~10:00.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 02:49 , Processed in 0.033954 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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