ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求问VBA怎么只对文档里所有英文括号的某个字符进行替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-9-20 09:44 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
比如下面这个例子:
$D( - 1$0$0)$,
$B(\frac{{\sqrt 3 }}{2}$,$ - \frac{1}{2}$,$0)$,
$\overrightarrow{{A_1}B}  = (1$,2,$ - \sqrt 3 )$,

上面三行句子里面,我想请问怎么能用vba只对英文括号()里的内容里的内容进行操作,比如只删除这些英文括号里的$符号并且只将这些英文括号里的中文逗号替换为英文逗号,而不影响英文括号外文档里的其他内容?

TA的精华主题

TA的得分主题

发表于 2020-9-20 22:20 | 显示全部楼层
$D( - 1$,0,$0)$,可以这样查找$:("*"&"$"&"*"),替换$为A:("*"&"A"&"*")

TA的精华主题

TA的得分主题

发表于 2020-9-21 01:25 | 显示全部楼层
  1. Sub a_test()
  2.     Dim r As Range
  3.     With ActiveDocument.Content.Find
  4.         .ClearFormatting
  5.         .Text = "\(*\)"
  6.         .Forward = True
  7.         .MatchWildcards = True
  8.         Do While .Execute
  9.             With .Parent
  10.                 .Font.Color = wdColorRed
  11.                 Set r = ActiveDocument.Range(Start:=.Start, End:=.End)
  12.                 With r.Find
  13.                     .Execute "$", , , 1, , , , , , "", 2
  14.                     .Execute ",", , , 1, , , , , , ",", 2
  15.                 End With
  16.             End With
  17.         Loop
  18.     End With
  19. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-21 19:30 | 显示全部楼层

感谢老师!可以运行,但是老师请问怎么让这段代码只对鼠标选定的段落有效,我只知道宏只对鼠标选定区域的方法是 将.Wrap = wdFindAsk 改为 .Wrap = wdFindStop,请问老师你这段代码怎么改才能只对鼠标区域运行你这段代码,能帮忙的话万分感谢!

TA的精华主题

TA的得分主题

发表于 2020-9-22 01:15 | 显示全部楼层
  1. Sub a_test_range()
  2.     Dim r As Range, s As Range, t As Range
  3.     With Selection
  4.         If .Type = 1 Then MsgBox "Not-Select!", 0 + 16: End
  5.         Set r = .Range
  6.         Set s = .Range
  7.         With r.Find
  8.             .ClearFormatting
  9.             .Text = "\(*\)"
  10.             .Forward = True
  11.             .MatchWildcards = True
  12.             Do While .Execute
  13.                 With .Parent
  14.                     .Font.Color = wdColorRed
  15.                     Set t = ActiveDocument.Range(Start:=.Start, End:=.End)
  16.                     With t.Find
  17.                         .Execute "$", , , 1, , , , , , "", 2
  18.                         .Execute ",", , , 1, , , , , , ",", 2
  19.                     End With
  20.                 End With
  21.                 r.SetRange Start:=r.End, End:=s.End
  22.             Loop
  23.         End With
  24.     End With
  25. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-22 22:09 | 显示全部楼层

完美运行!感谢老师,老师能否推荐下这方面的VBA书籍,我想系统地学下,我有VB和C的基础,就想问下有哪些视频或者书籍推荐的吗,能给一点关键词就可以。再次非常感谢老师的慷慨帮助

TA的精华主题

TA的得分主题

发表于 2020-9-26 23:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老师不敢当!VBA书籍,似乎很少,但有免费的微软官方VBA帮助文档(Word2003版VBAWD10.CHM)可以学习利用。如果你没有这个文档,我可以发给你,或在网络上搜索此文档也可。另外,推荐一本《VBA从入门到精通》(第二版)PDF,如果你没有我也可以发给你。想要可以留下邮箱。

TA的精华主题

TA的得分主题

发表于 2020-9-30 11:00 | 显示全部楼层
413191246se 发表于 2020-9-26 23:45
老师不敢当!VBA书籍,似乎很少,但有免费的微软官方VBA帮助文档(Word2003版VBAWD10.CHM)可以学习利用。 ...

老师,麻烦分享下上述您讲的这两个,邮箱weifeng5596@163.com,谢谢!

TA的精华主题

TA的得分主题

发表于 2020-9-30 22:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-10-7 19:58 | 显示全部楼层
413191246se 发表于 2020-9-26 23:45
老师不敢当!VBA书籍,似乎很少,但有免费的微软官方VBA帮助文档(Word2003版VBAWD10.CHM)可以学习利用。 ...

老师上次是很忙,另外可以麻烦分享下这两份文档吗,邮箱是gracefully7@163.com,谢谢老师的指点!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 19:47 , Processed in 0.032767 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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