ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

使用VBA查找特定文本并将该段设置为宋体?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-9-12 17:20 | 显示全部楼层 |阅读模式
使用VBA查找特定文本并将该段设置为宋体?
1、查找每段文字开头形如(1)。。。(n)
2、将该段文本设置为宋体四号
谢谢!

TA的精华主题

TA的得分主题

发表于 2016-9-12 19:15 | 显示全部楼层
版主,提供附件不方便吗?一般来说:查找  是非常需要附件的支撑!

TA的精华主题

TA的得分主题

发表于 2016-9-12 19:32 | 显示全部楼层
本帖最后由 duquancai 于 2016-9-12 19:48 编辑
  1. Sub shishi()
  2.     Dim mt, oRang As Range, rng As Range, n%, m%
  3.     Set rng = ActiveDocument.Content
  4.     With CreateObject("vbscript.regexp")
  5.         .Pattern = "^[((]\s*\d+\s*[))][^\r]*$"
  6.         .Global = True: .MultiLine = True
  7.         For Each mt In .Execute(rng)
  8.             m = mt.FirstIndex: n = mt.Length
  9.             Set oRang = ActiveDocument.Range(m, m + n)
  10.             oRang.Font.Size = 14
  11.             oRang.Font.Name = "宋体"
  12.         Next
  13.     End With
  14. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-13 04:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-9-13 08:52 | 显示全部楼层
本帖最后由 13907933959 于 2016-9-13 09:16 编辑

前辈好!
感谢前辈的多次出手相助!
前辈上面的代码在整理文档中,相当的实用,能否向前辈求下面7个单独的代码,查找括号内数字及标题数字开头的段落,并设置它们的:字体、字形(加粗、斜体、下划线)、字号、颜色。
(1)、(2)、(3)、……。
(一)、(二)、(三)、……。
(A)、(B)、(C)、……。
(a)、(b)、(c)、……。
⒈⒉⒊……。
①、②、③……。
㈠、㈡、㈢……。

万分感谢!

模拟附件.rar

8.98 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2016-9-13 11:17 | 显示全部楼层
本帖最后由 duquancai 于 2016-9-13 11:24 编辑
13907933959 发表于 2016-9-13 08:52
前辈好!
感谢前辈的多次出手相助!
前辈上面的代码在整理文档中,相当的实用,能否向前辈求下面7个单 ...

这些编号序列,我只说说带圈数字序列的代码点 ,其它的都简单。
就是形如:①、②、③……。这种带圈数字序列,Windows系统默认状态下:支持1-20的带圈的数字。
正则匹配这种带圈数字序列可以考虑用Unicode字符代码点进行匹配。
现举例:匹配1-20的带圈的数字Unicode字符代码点范围:   [\u2460-\u2473]  更多的代码点请查阅Unicode编码。
因此结合本帖的要求其WordVBA代码如下:
  1. Sub shishi()
  2.     Dim mt, oRang As Range, rng As Range, n%, m%
  3.     Set rng = ActiveDocument.Content
  4.     With CreateObject("vbscript.regexp")
  5.         .Pattern = "^[\u2460-\u2473][^\r]*$"
  6.         .Global = True: .MultiLine = True
  7.         For Each mt In .Execute(rng)
  8.             m = mt.FirstIndex: n = mt.Length
  9.             Set oRang = ActiveDocument.Range(m, m + n)
  10.             oRang.Font.Size = 14
  11.             oRang.Font.Name = "宋体"
  12.         Next
  13.     End With
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-9-13 11:43 | 显示全部楼层
duquancai 发表于 2016-9-13 11:17
这些编号序列,我只说说带圈数字序列的代码点 ,其它的都简单。
就是形如:①、②、③……。这种带圈数 ...

前辈好!
感谢回复及代码!代码准确无误!
对前辈来说简单的问题,对我来说就是超大的难题!不要说写出来,看都还看不太懂,所以、能否恳请前辈帮忙写一下其它的几个代码?谢谢!

TA的精华主题

TA的得分主题

发表于 2016-9-13 12:09 | 显示全部楼层
本帖最后由 duquancai 于 2016-9-13 15:03 编辑
13907933959 发表于 2016-9-13 11:43
前辈好!
感谢回复及代码!代码准确无误!
对前辈来说简单的问题,对我来说就是超大的难题!不要说写出 ...

(1)、(2)、(3)、……。            .Pattern = "^(\s*\d+\s*)[^\r]*$"
(一)、(二)、(三)、……。        .Pattern = "^(\s*[一二三四五六七八九十〇百千万]+\s*)[^\r]*$"
(A)、(B)、(C)、……。           .Pattern = "^([A-Z]+)[^\r]*$"
(a)、(b)、(c)、……。            .Pattern = "^([a-z]+)[^\r]*$"
⒈⒉⒊……。                                   .Pattern = "^[\u2488-\u249B][^\r]*$"
①、②、③……。                             .Pattern = "^[\u2460-\u2473][^\r]*$"
㈠、㈡、㈢……。                             .Pattern = "^[\u3220-\u3229][^\r]*$"

TA的精华主题

TA的得分主题

发表于 2016-9-13 15:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-9-13 12:09
(1)、(2)、(3)、……。            .Pattern = "^(\s*\d+\s*)[^\r]*$"
(一)、(二)、(三) ...

前辈好!
感谢回复!公式准确无误!
前辈这几段查找公式,不但为在下整理文档真省了不少的时间,而且还受益非浅!在下拜谢前辈!!!

TA的精华主题

TA的得分主题

发表于 2016-10-8 21:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-29 02:56 , Processed in 0.055090 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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