ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求你一帮:老眼昏花?一段简单代码也有问题!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-25 17:13 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
效果见文档
请大侠一看。
Sub 加下划线()
With ActiveDocument.Content
     With .Find
          With .Replacement
               .Font.Underline = wdUnderlineWavy
               .Font.ColorIndex = wdBlack
          End With
          .Execute "(:[!^13]@\()", , , 1, , , , , "^&", 2
     End With
     With .Find
          With .Replacement
               .Font.Underline = wdUnderlineNone
               .Font.ColorIndex = wdBlack
          End With
          .Execute "(:|\()", , , 1, , , , , "^&", 2
     End With
End With
End Sub

默写加下划线.rar

1.35 MB, 下载次数: 13

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-25 17:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
再次求助,希望大侠出手。

TA的精华主题

TA的得分主题

发表于 2019-7-25 21:47 | 显示全部楼层
试试如下代码:
  1. Sub the_Test()
  2.     Dim reg As Object, theStr$
  3.     Dim theMatches As Object, theSubMatch As Variant
  4.     Dim theStart&, theEnd&, theFirstIndex&
  5.     Dim rng As Range
  6.     '
  7.     Set reg = CreateObject("VBScript.RegExp")
  8.     With reg
  9.         .Global = True
  10.         .Pattern = "默写:[^(]+"
  11.     End With
  12.     With ActiveDocument
  13.         theStr = .Content
  14.         If reg.test(theStr) Then
  15.             Set theMatches = reg.Execute(theStr)
  16.             For Each theSubMatch In theMatches
  17.                 theFirstIndex = theSubMatch.firstindex
  18.                 theStart = theFirstIndex + 3
  19.                 theEnd = theStart + Len(theSubMatch) - 3
  20.                 With .Range(theStart, theEnd).Font
  21.                     If .Underline = wdUnderlineWavy Then
  22.                         .Underline = wdUnderlineNone
  23.                     Else
  24.                         .Underline = wdUnderlineWavy
  25.                     End If
  26.                     If .ColorIndex = wdBlack Then
  27.                         .ColorIndex = wdAuto
  28.                     Else
  29.                         .ColorIndex = wdBlack
  30.                     End If
  31.                 End With
  32.             Next theSubMatch
  33.         End If
  34.     End With
  35.     Set theMatches = Nothing
  36.     Set reg = Nothing
  37. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-26 17:51 | 显示全部楼层
gbgbxgb 发表于 2019-7-25 21:47
试试如下代码:

谢谢你,你用正则解决,很好。我的那个简单代码,不知问题出在哪里,能帮我看看嘛?

TA的精华主题

TA的得分主题

发表于 2019-8-2 00:20 | 显示全部楼层
* gbgbxgb 老师 的代码运行了,很好!
* 魏老师,我发现你在替换操作时(简写),“1”后面少写了一个逗号(,)。前面是 3 个逗,后面是 6 个逗。
* 另外,查找时半角括号要用中括号括上,如([(])。
* 还有,查找替换设置格式时,是无法舍弃前/后字符的,还是用 VBA 语句,如:.MoveStart/.MoveEnd 来取舍才好。——这个“.MoveEnd”方法,希望 魏老师 认真学习一下,非常有好处。
* 下面是我的代码:
  1. Sub a经典代码_查找_通用_ActiveDocument_加粗_下划线()
  2.     With ActiveDocument.Content.Find
  3.         .ClearFormatting
  4.         .Text = ":*\("
  5.         .Forward = True
  6.         .MatchWildcards = True
  7.         Do While .Execute
  8.             With .Parent
  9.                 .MoveStart
  10.                 .MoveEnd 1, -1
  11.                 With .Font
  12.                     .Bold = True
  13.                     .Color = wdColorRed '红色
  14.                     .Underline = wdUnderlineWavy
  15.                 End With
  16.                 .Start = .End
  17.             End With
  18.         Loop
  19.     End With
  20. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-3 21:01 | 显示全部楼层
413191246se 发表于 2019-8-2 00:20
* gbgbxgb 老师 的代码运行了,很好!
* 魏老师,我发现你在替换操作时(简写),“1”后面少写了一个逗 ...

谢谢你的帮助和指点,我最近比较忙,很少逛论坛。
你说的很有道理。带我有功夫,再来嚼一嚼,到时不懂的还是要请教你。

TA的精华主题

TA的得分主题

发表于 2019-8-3 21:39 | 显示全部楼层
本帖最后由 413191246se 于 2019-8-3 21:41 编辑

魏老师 又会数组,又会正则,我很羡慕您呢!像[((](或[\((]这种用法,我还是向 杜老师 学到的。像 loquat 老师、duquancai 老师、zhanglei1371 老师、ming0018 老师,及论坛前辈高人各位老师都是我们学习的对象。
最近论坛又出了几位高人,如:gbgbxgb 老师、chonghong8 老师、daibao88 老师 等,都会函数、数组、字典、正则……等,令我非常羡慕,得多向这些高人老师们学习(还有论坛高人/大神 sylun 老师又回归了)。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 05:58 , Processed in 0.026228 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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