ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个把多层文件夹内文档内任意数字与任意数字之间的:替换成∶的宏。

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-5 07:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-5-5 09:19 编辑
413191246se 发表于 2016-5-4 15:02
139:此宏瞬息完成,一气呵成!中间变为红色再变为黑色,完全没有必要。

师傅好!
中间变为红色再变为黑色,我也知道这个是多余,本来师傅给的6楼代码以完全解决文题,再请师傅用变色的方法查找替换冒号,还有另一个目的,就是想把这个查找中文冒号→替换为红色英文冒号   再查找红色英文冒号→替换为黑色  这样的一个步骤扩展到其它的宏中使用,因此少了查找红色英文冒号→替换为黑色  这一步没办法完成,所以求师傅务必为徒弟再加上这一步。

TA的精华主题

TA的得分主题

发表于 2016-5-5 09:35 | 显示全部楼层
139:我想你的要求,一步完不成。你还是用两个宏吧,就是单、多文档的那两个步骤的宏(其实两个宏的语句都是重复的)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-5 10:16 | 显示全部楼层
本帖最后由 13907933959 于 2016-5-11 14:55 编辑
413191246se 发表于 2016-5-5 09:35
139:我想你的要求,一步完不成。你还是用两个宏吧,就是单、多文档的那两个步骤的宏(其实两个宏的语句都 ...

师傅好!
这一步:查找红色英文冒号替换为黑色  加不了吗?  能不能请师傅再想想办法,我很想要这一步!
            

        

TA的精华主题

TA的得分主题

发表于 2016-5-5 16:32 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-6 07:17 | 显示全部楼层
本帖最后由 13907933959 于 2016-5-11 14:56 编辑
413191246se 发表于 2016-5-5 16:32
139:请你详细说说整个运作流程!(到底分几步?)

师傅好!
查找替换数字之间的中文冒号(一个宏里面)先后运作流程:
1、查找中文冒号→替换为红色
2、查找红色中文冒号→替换为红色英文冒号
3、查找红色英文冒号→替换为黑色

TA的精华主题

TA的得分主题

发表于 2016-5-6 08:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 413191246se 于 2016-5-6 08:44 编辑

139:像你说的应该分三步!但实际上,找到中文冒号后,只须判断如果是红色,则赋值为英文冒号即可;再替换为黑色即可,无须再查找。也就是说,只须一个宏。但你到底想要几个宏完成这些步骤?(另外,请你先打开模拟文档,再在VBE中把光标放到宏代码处,每次按一下F8键,观察具体执行步骤,看看。)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-6 09:37 | 显示全部楼层
本帖最后由 13907933959 于 2016-5-6 09:53 编辑
413191246se 发表于 2016-5-6 08:42
139:像你说的应该分三步!但实际上,找到中文冒号后,只须判断如果是红色,则赋值为英文冒号即可;再替换 ...

师傅好!
在一个宏内完成这些步骤。

师傅、打开模拟文档,再在VBE中把光标放到宏代码处,每次按一下F8键,观察具体执行步骤,如跳过的代码是不是表明这个是多余或无效的语句?

TA的精华主题

TA的得分主题

发表于 2016-5-6 14:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
139:请你仔细边按F8键逐步执行代码,边观察文档中的变化。中文冒号找到后,判断它前后的字符是否是数字,如果是数字则再选定中文冒号,直接赋值为英文冒号即可(不知你非要变为红色,再变为黑色,这两个无效步骤,给谁看?因为这些步骤是在循环当中反复执行的,瞬息完成)。——跳过的代码,应该前面是有单引号小撇'引领的语句,当然是可以删除的,有时是为了调试,为了醒目、鲜明。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-7 08:08 | 显示全部楼层
413191246se 发表于 2016-5-6 14:57
139:请你仔细边按F8键逐步执行代码,边观察文档中的变化。中文冒号找到后,判断它前后的字符是否是数字, ...

师傅好!
我指的是前面没有单引号小撇'引领的语句,按F8会跳过的代码。
师傅、是不是下面的第3个步骤,违背了编写VBA代码的法则,不能实现?如果只是走了多余的弯路,我还是想劳请师傅为徒弟编写一个含有下面3个步骤的宏。
1、查找中文冒号→替换为红色
2、查找红色中文冒号→替换为红色英文冒号
3、查找红色英文冒号→替换为黑色

TA的精华主题

TA的得分主题

发表于 2016-5-9 10:07 | 显示全部楼层
139:你的耐心很好!这点我不如你。——明明一段代码可以解决,你偏偏要三段代码,我还是提供了你要的代码(在宏内,黄色所在的代码按一下F8键,就是执行了它,是不是这点你称为跳过?)
  1. Sub try()
  2. '1、查找中文冒号→替换为红色
  3.     Selection.HomeKey Unit:=wdStory
  4.     Selection.Find.ClearFormatting
  5.     Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  6.         Selection.MoveStart Unit:=wdCharacter, Count:=-1
  7.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  8.         If Selection Like "[0-9]?[0-9]" Then
  9.             Selection.MoveStart Unit:=wdCharacter, Count:=1
  10.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  11.             Selection.Font.Color = wdColorRed '红色
  12.         End If
  13.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  14.     Loop

  15. '2、查找红色中文冒号→替换为红色英文冒号
  16.     Selection.HomeKey Unit:=wdStory
  17.     Selection.Find.ClearFormatting
  18.     Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  19.         Selection.MoveStart Unit:=wdCharacter, Count:=-1
  20.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  21.         If Selection Like "[0-9]?[0-9]" Then
  22.             Selection.MoveStart Unit:=wdCharacter, Count:=1
  23.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  24.             If Selection.Font.Color = wdColorRed Then Selection.Text = ":" '红色替换为英文冒号
  25.         End If
  26.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  27.     Loop

  28. '3、查找红色英文冒号→替换为黑色
  29.     Selection.HomeKey Unit:=wdStory
  30.     Selection.Find.ClearFormatting
  31.     Do While Selection.Find.Execute(FindText:=":", Forward:=True)
  32.         Selection.MoveStart Unit:=wdCharacter, Count:=-1
  33.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  34.         If Selection Like "[0-9]?[0-9]" Then
  35.             Selection.MoveStart Unit:=wdCharacter, Count:=1
  36.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  37.             If Selection.Font.Color = wdColorRed Then Selection.Font.Color = wdColorBlack '若红色替换为黑色
  38.         End If
  39.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  40.     Loop
  41. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-14 19:42 , Processed in 0.023594 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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