ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 优化:保持行距不变保留切换按钮

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-4-2 22:47 | 显示全部楼层
weiyingde 发表于 2017-4-2 20:28
呵呵,有三四个qq待加,因为不明身份,我没加,能把你的qq给我吗?我加你的。

我加你的时候都i注明是excelhome论坛网友的,我的Q号是452820843。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-3 11:33 | 显示全部楼层
本帖最后由 weiyingde 于 2017-4-4 20:01 编辑

总觉还可简化和提速,看看附件中的一个过程的代码:
目的:将“(    )"括号的内容隐藏
说明:括号内有的是拼音,有的是汉字。
问题:1、能否用定界符,准确定位括号内的内容?
      2、能否用”|“选择符来限定括号内要选择的内容用:(汉字|拼音)的形式
     来简化过程
其他,若是融进主体代码中也可以。
附件如下;
Sub 测试()
With ActiveDocument.Content
        .Font.ColorIndex = wdBlack
        With .Find
            .Replacement.Font.ColorIndex = IIf(Me.CommandButton1.Caption = "测试", 8, 1)
            .Execute "(\([!^1-^127]@)\)", , , 1, , , , , 1, , 2 '匹配拼音
        End With
        With .Find
            .Replacement.Font.ColorIndex = IIf(Me.CommandButton1.Caption = "测试", 8, 1)
            .Execute "\(([!^13]@)\)", , , 1, , , , , 1, , 2 '匹配拼音\([!^13]@\)
        End With
        With .Find
            .Replacement.Font.ColorIndex = 1
            .Execute "[\(\)]@", , , 1, , , , , 1, , 2 '匹配拼音\([!^13]@\)
        End With
End With
End Sub
今天我利用?:进行精确定位,简化为以下代码,为什么没有效果,而且弹出了毛病对话框
请大虾为我指指路,简化代码如下:
Sub 测试()
With ActiveDocument.Content
        .Font.ColorIndex = wdBlack
        With .Find
            .Replacement.Font.ColorIndex = IIf(Me.CommandButton1.Caption = "测试", 8, 1)
            .Execute "(?:(\)([!^1-^127]@|[!^13]@)(?:\))", , , 1, , , , , 1, , 2
        End With
End With
End Sub


常考词语前300(音形易错)版.rar

55.33 KB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-6 18:15 | 显示全部楼层
dafanshu1 发表于 2017-4-2 22:47
我加你的时候都i注明是excelhome论坛网友的,我的Q号是452820843。

问一个word查找合体换的问题:
查找框中:(?{1,})\1
替换框中:\1

两个框中的\1,怎么不好理解。

TA的精华主题

TA的得分主题

发表于 2017-4-7 10:44 | 显示全部楼层
weiyingde 发表于 2017-4-6 18:15
问一个word查找合体换的问题:
查找框中:(?{1,})\1
替换框中:\1

不好意思,最近工作太忙,未研究你之前的问题呢。
\1都是代表查找框中第一个括号的内容。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-7 11:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dafanshu1 发表于 2017-4-7 10:44
不好意思,最近工作太忙,未研究你之前的问题呢。
\1都是代表查找框中第一个括号的内容。

\1这样这种写法好像是这样的:
(1)出现的地方是:替换框中。
(2)作用是:捕获查找框中第一个括号的内容或表达式。
我的理解是:既有捕获作用,另外还有替代作用;
可是出现在查找框中,就匪夷所思了:难道自己替代自己吗?
另外比喻说,有这样几行程序代码:

Sub 删除连续的重复段落和不连续的重复段落()
With ActiveDocument.Content.Find
     .Execute "(?{1,})\1", , , 1, , , , , , "\1", 2
End With
End Sub
查找中红色\1,指的是本框的"(?{1,})“,而替换框中蓝色的\1,不是也能表示前面的"(?{1,})吗?
这样说,查找中红色\1的指代,岂不多此一举?删除之后,不也能很清楚的表达吗?
还有:
.Execute "(?{1,})\1", , , 1, , , , , , "^&", 2
.Execute "(?{1,})\1", , , 1, , , , , , "\1", 2
这样量的表达有什么不同?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-7 21:51 | 显示全部楼层
简化代码,自己解决,是第一段自己解决的有关查找的第一例,发出以作纪念,并方便别人。
代码如下:
Sub 显示括号及号外内容同时隐藏号内内容()
With ActiveDocument.Content
   .Font.ColorIndex = 1
   With .Find
     .Replacement.Font.Bold = True
     .Execute "(\(*\))", , , 1, , , , , , "^&", 2
   End With
End With
With ActiveDocument.Content.Find
.Font.Bold = True
.Font.Size = 10.5
.Format = True
.Replacement.Font.ColorIndex = IIf(Me.CommandButton1.Caption = "测试", 8, 1)
.Replacement.Font.Bold = False
.Execute "[!\(\)]", , , 1, , , , , , "^&", 2
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2017-4-7 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
weiyingde 发表于 2017-4-7 11:45
\1这样这种写法好像是这样的:
(1)出现的地方是:替换框中。
(2)作用是:捕获查找框中第一个括号的 ...

查找框(?{1,})\1是表示要查找连续两个(?{1,})放在一起的内容,相当于查找(?{1,}){2},而替换框为\1,表示将查找到的连续两个(?{1,})替换成1个(?{1,})。
至于替换框为^&,表示将查找到的内容替换为查找框的内容,这就是自己替代自己了, 即替换后原文本内容不变。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-8 07:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dafanshu1 发表于 2017-4-7 22:51
查找框(?{1,})\1是表示要查找连续两个(?{1,})放在一起的内容,相当于查找(?{1,}){2},而替换框为\1,表示 ...

终于懂了,谢谢你的讲解。学习有你,一路轻松!!

TA的精华主题

TA的得分主题

发表于 2017-4-11 07:08 | 显示全部楼层
本帖最后由 13907933959 于 2017-4-11 09:49 编辑
dafanshu1 发表于 2017-4-7 22:51
查找框(?{1,})\1是表示要查找连续两个(?{1,})放在一起的内容,相当于查找(?{1,}){2},而替换框为\1,表示 ...

前辈好!
我理解为,在“替换为”框内, ^& 与 \1,意思都是“替换的内容不变”。区别在于:^& 指的是“格式”(字体、字号、字形、颜色…等),而 \1 指的是“字符”。
不知对不对?请修正!

TA的精华主题

TA的得分主题

发表于 2017-4-11 12:38 | 显示全部楼层
weiyingde 发表于 2017-4-3 11:33
总觉还可简化和提速,看看附件中的一个过程的代码:
目的:将“(    )"括号的内容隐藏
说明:括号内有 ...

?:应是用在正则表达式中吧......
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 04:00 , Processed in 0.041809 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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