ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何一键隐藏和显示【 】中的内容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-28 09:11 | 显示全部楼层 |阅读模式
各位老师,如何实现用控件,一键显示和隐藏【   】中的内容
万分感谢
如何隐藏.rar (10.73 KB, 下载次数: 23)

TA的精华主题

TA的得分主题

发表于 2021-5-28 14:16 | 显示全部楼层
  1. Sub 隐藏()
  2.     ActiveDocument.ActiveWindow.View.ShowHiddenText = False
  3.     With ActiveDocument.Content.Find
  4.         .ClearFormatting
  5.         .Text = "【*】"
  6.         .Forward = True
  7.         .MatchWildcards = True
  8.         Do While .Execute
  9.             With .Parent
  10.                 If Not Selection.Type = wdSelectionIP Then
  11.                     If .End > Selection.End Then Exit Do
  12.                 End If
  13.                 For Each a In .Characters
  14.                     If a <> "【" And a <> "】" Then a.Font.Hidden = True
  15.                 Next
  16.                 .Start = .End
  17.             End With
  18.         Loop
  19.     End With
  20. End Sub
  21. Sub 显示()
  22.     ActiveDocument.ActiveWindow.View.ShowHiddenText = True
  23.     ActiveDocument.Content.Font.Hidden = False
  24. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-28 16:38 | 显示全部楼层

老师好,感谢老师的解答。请问,能否保持【  】距离不缩减。也就是说,是这样的:【          】

TA的精华主题

TA的得分主题

发表于 2021-5-28 20:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
金色和谐家园 发表于 2021-5-28 16:38
老师好,感谢老师的解答。请问,能否保持【  】距离不缩减。也就是说,是这样的:【          】

试试下面的效果:
  1. Sub 隐藏()
  2.     ActiveDocument.ActiveWindow.View.ShowHiddenText = False
  3.     With ActiveDocument.Content.Find
  4.         .ClearFormatting
  5.         .Text = "【*】"
  6.         .Forward = True
  7.         .MatchWildcards = True
  8.         Do While .Execute
  9.             With .Parent
  10.                 If Not Selection.Type = wdSelectionIP Then
  11.                     If .End > Selection.End Then Exit Do
  12.                 End If
  13.                 For i = 1 To CountZh(.Text)
  14.                     .Text = Left(.Text, Len(.Text) - 1) & " " & "】"
  15.                 Next
  16.                 For Each a In .Characters
  17.                     If a <> "【" And a <> "】" And a <> " " Then a.Font.Hidden = True
  18.                 Next
  19.                 .Start = .End
  20.             End With
  21.         Loop
  22.     End With
  23. End Sub
  24. Sub 显示()
  25.     ActiveDocument.ActiveWindow.View.ShowHiddenText = True
  26.     ActiveDocument.Content.Font.Hidden = False
  27.     With ActiveDocument.Content.Find
  28.         .ClearFormatting
  29.         .Text = "【*】"
  30.         .Forward = True
  31.         .MatchWildcards = True
  32.         Do While .Execute
  33.             With .Parent
  34.                 If Not Selection.Type = wdSelectionIP Then
  35.                     If .End > Selection.End Then Exit Do
  36.                 End If
  37.                 .Text = Replace(.Text, " ", "")
  38.                 .Start = .End
  39.             End With
  40.         Loop
  41.     End With
  42. End Sub
  43. Function CountZh(ByVal sZh As String) As Integer
  44.     Dim reg, matches
  45.     Set reg = CreateObject("VBScript.RegExp")
  46.     reg.Pattern = "[\u4e00-\u9fa5]"
  47.     reg.Global = True
  48.     reg.IgnoreCase = True
  49.     Set matches = reg.Execute(sZh)
  50.     CountZh = matches.Count + Len(sZh) - 2
  51.     Set reg = Nothing
  52. End Function
复制代码


TA的精华主题

TA的得分主题

发表于 2021-5-28 20:59 | 显示全部楼层
金色和谐家园 发表于 2021-5-28 16:38
老师好,感谢老师的解答。请问,能否保持【  】距离不缩减。也就是说,是这样的:【          】
  1. Sub 隐藏()
  2.     ActiveDocument.ActiveWindow.View.ShowHiddenText = False
  3.     With ActiveDocument.Content.Find
  4.         .ClearFormatting
  5.         .Text = "【*】"
  6.         .Forward = True
  7.         .MatchWildcards = True
  8.         Do While .Execute
  9.             With .Parent
  10.                 If Not Selection.Type = wdSelectionIP Then
  11.                     If .End > Selection.End Then Exit Do
  12.                 End If
  13.                 .Text = Left(.Text, Len(.Text) - 1) & Space(CountZh(.Text)) & "】"
  14.                 For Each a In .Characters
  15.                     If a <> "【" And a <> "】" And a <> " " Then a.Font.Hidden = True
  16.                 Next
  17.                 .Start = .End
  18.             End With
  19.         Loop
  20.     End With
  21. End Sub
  22. Sub 显示()
  23.     ActiveDocument.ActiveWindow.View.ShowHiddenText = True
  24.     ActiveDocument.Content.Font.Hidden = False
  25.     With ActiveDocument.Content.Find
  26.         .ClearFormatting
  27.         .Text = "【*】"
  28.         .Forward = True
  29.         .MatchWildcards = True
  30.         Do While .Execute
  31.             With .Parent
  32.                 If Not Selection.Type = wdSelectionIP Then
  33.                     If .End > Selection.End Then Exit Do
  34.                 End If
  35.                 .Text = Replace(.Text, " ", "")
  36.                 .Start = .End
  37.             End With
  38.         Loop
  39.     End With
  40. End Sub
  41. Function CountZh(ByVal sZh As String) As Integer
  42.     Dim reg, matches
  43.     Set reg = CreateObject("VBScript.RegExp")
  44.     reg.Pattern = "[\u4e00-\u9fa5]"
  45.     reg.Global = True
  46.     reg.IgnoreCase = True
  47.     Set matches = reg.Execute(sZh)
  48.     CountZh = matches.Count + Len(sZh) - 2
  49.     Set reg = Nothing
  50. End Function
复制代码


TA的精华主题

TA的得分主题

发表于 2021-5-28 21:44 | 显示全部楼层
金色和谐家园 发表于 2021-5-28 16:38
老师好,感谢老师的解答。请问,能否保持【  】距离不缩减。也就是说,是这样的:【          】

或者直接设置为白色以达到隐藏的目的:
  1. Sub 隐藏()
  2.     With ActiveDocument.Content.Find
  3.         .ClearFormatting
  4.         .Text = "【*】"
  5.         .Forward = True
  6.         .MatchWildcards = True
  7.         Do While .Execute
  8.             With .Parent
  9.                 If Not Selection.Type = wdSelectionIP Then
  10.                     If .End > Selection.End Then Exit Do
  11.                 End If
  12.                 For Each a In .Characters
  13.                     If a <> "【" And a <> "】" Then a.Font.Color = vbWhite
  14.                 Next
  15.                 .Start = .End
  16.             End With
  17.         Loop
  18.     End With
  19. End Sub
  20. Sub 显示()
  21.     With ActiveDocument.Content
  22.         .Font.Color = wdColorAutomatic
  23.     End With
  24. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-30 18:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-6-6 17:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
也是用设置为白色的方式实现,录制宏做的,两键切换。
  1. Sub 隐藏()
  2.     Selection.Find.ClearFormatting
  3.     Selection.Find.Replacement.ClearFormatting
  4.     With Selection.Find
  5.         .Text = "【(*)】"
  6.         .Replacement.Text = "【#\1#】"
  7.         .Forward = True
  8.         .Wrap = wdFindContinue
  9.         .Format = False
  10.         .MatchCase = False
  11.         .MatchWholeWord = False
  12.         .MatchByte = False
  13.         .MatchAllWordForms = False
  14.         .MatchSoundsLike = False
  15.         .MatchWildcards = True
  16.     End With
  17.     Selection.Find.Execute Replace:=wdReplaceAll
  18.    
  19.     Selection.Find.ClearFormatting
  20.     Selection.Find.Replacement.ClearFormatting
  21.     Selection.Find.Replacement.Font.Color = -603914241
  22.     With Selection.Find
  23.         .Text = "#(*)#"
  24.         .Replacement.Text = "\1"
  25.         .Forward = True
  26.         .Wrap = wdFindContinue
  27.         .Format = True
  28.         .MatchCase = False
  29.         .MatchWholeWord = False
  30.         .MatchByte = False
  31.         .MatchAllWordForms = False
  32.         .MatchSoundsLike = False
  33.         .MatchWildcards = True
  34.     End With
  35.     Selection.Find.Execute Replace:=wdReplaceAll
  36. End Sub

  37. Sub 显示()
  38.    
  39.     Selection.Find.ClearFormatting
  40.     Selection.Find.Replacement.ClearFormatting
  41.     Selection.Find.Replacement.Font.Color = wdColorAutomatic
  42.     With Selection.Find
  43.         .Text = "【(*)】"
  44.         .Replacement.Text = "【\1】"
  45.         .Forward = True
  46.         .Wrap = wdFindContinue
  47.         .Format = True
  48.         .MatchCase = False
  49.         .MatchWholeWord = False
  50.         .MatchByte = False
  51.         .MatchAllWordForms = False
  52.         .MatchSoundsLike = False
  53.         .MatchWildcards = True
  54.     End With
  55.     Selection.Find.Execute Replace:=wdReplaceAll
  56. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-8 02:19 , Processed in 0.034747 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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