ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 恳请指瑕完善:隐藏或显示括号拼音

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-7-7 21:23 | 显示全部楼层 |阅读模式
本帖最后由 weiyingde 于 2017-7-8 16:28 编辑

试卷中经常要在显示和隐藏拼音之间切换,下面的代码意在如此,只可惜在处理拼音的同时,连同前后括号也一起处理了。怎样通过前后括号定位里的内容而不包含括号呢?
我的代码如下,请大侠完善指瑕。
数据如下:
鳞次zhì(栉)比
qiè(锲)而不舍
吹毛求cī(疵)
xiāo(销)声nì(匿)迹
通xiāo(宵)达旦
惟妙惟xiào(肖)
相形见chù(绌)
jiá(戛)然而止
kè(恪)尽职守
忍俊不jīn(禁)
义愤填yīng(膺)
妇rú(孺)皆知
格物zhì(致)知
根深dì(蒂)固
即物起xìng(兴)
毛骨sǒng(悚)然
眼花liáo(缭)乱
藏污纳gòu(垢)
顶礼mó(膜)拜
迫不jí(及)待
不言而yù(喻)
chì zhà(叱咤)风云
广mào(袤)无yín(垠)
浑身xiè(解)数
代码如下:
Sub 隐藏或显示拼音()
n = n + 1
s = n Mod 2 + 1
With CreateObject("Vbscript.Regexp")
     .Global = True
     .MultiLine = True
     .Pattern = "[(\(()].*?(?=[(\)))]|$)"
     For Each m In .Execute(ActiveDocument.Content)
       f = m.FirstIndex: l = m.Length
      With ActiveDocument.Range(f, f + l + 1).Font
           .ColorIndex = Choose(s, wdDarkBlue, wdWhite)
      End With
     Next
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2017-7-7 22:30 | 显示全部楼层
1、不明确切换的具体意思是什么
2、没有附件不应该

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-8 06:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 weiyingde 于 2017-7-8 06:41 编辑
小花鹿 发表于 2017-7-7 22:30
1、不明确切换的具体意思是什么
2、没有附件不应该

谢谢关注,问题是这样的:
目的:我想通过运行代码达到隐藏或显示答案的切换的目的。
问题:本只想隐藏括号里的内容,没想到连括号及括号后的部分内容也隐藏了。
求助:只求括号内容的隐藏或显示的切换。不涉及其他内容。
要求:这是以往一个问题的完善和简化,前者在杜先生的指教下已完成。这一次我只想用另外的方式,希望小花鹿先生在我的原代码的基础上进行修改。谢谢了。
附件如下(代码在附件中)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-8 06:40 | 显示全部楼层
见附件,请小花鹿指教。谢谢你

隐藏或显示括号拼音.rar

15.93 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2017-7-8 08:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 匹配拼音()
n = n + 1
s = n Mod 2 + 1
With CreateObject("Vbscript.Regexp")
     .Global = True
     .MultiLine = True
     .Pattern = "[(\(].*?(?=[(\))]|$)"
     For Each m In .Execute(ActiveDocument.Content)
       f = m.FirstIndex + 1: l = m.Length
      With ActiveDocument.Range(f, f + l - 1).Font
           .ColorIndex = Choose(s, wdDarkBlue, wdWhite)
      End With
     Next
End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-8 09:16 | 显示全部楼层
本帖最后由 weiyingde 于 2017-7-8 09:20 编辑

谢谢你,原来是这里的错误:
f = m.FirstIndex + 1
Range(f, f + l - 1)
看来我的思维太呆板,让小花鹿见笑了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-8 09:36 | 显示全部楼层
小花鹿 发表于 2017-7-8 08:27
Sub 匹配拼音()
n = n + 1
s = n Mod 2 + 1

在测试发现美中不足。
在隐藏括号内容的同时,发现将“)”之后的内容也给隐藏掉了。
例如:
顶礼mó(膜)拜
广mào(袤)无yín(垠)
隐藏之后变成了:
顶礼mó(  )
广mào(  )      (  )
而应该是:
顶礼mó(   )
广mào(   )无yín(   )
红字的部分被失控地隐藏了。不能能否优化或修改代码?

TA的精华主题

TA的得分主题

发表于 2017-7-8 09:55 | 显示全部楼层
weiyingde 发表于 2017-7-8 09:36
在测试发现美中不足。
在隐藏括号内容的同时,发现将“)”之后的内容也给隐藏掉了。
例如:

我5楼的代码你试了吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-8 10:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
小花鹿 发表于 2017-7-8 09:55
我5楼的代码你试了吗?

已经试过,确实如此。麻烦你再看一下。

TA的精华主题

TA的得分主题

发表于 2017-7-8 10:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
weiyingde 发表于 2017-7-8 10:30
已经试过,确实如此。麻烦你再看一下。

2017-07-08_105810.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 22:05 , Processed in 0.024875 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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