ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于查找“行”的问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-10 20:14 | 显示全部楼层
413191246se 发表于 2024-8-10 12:24
* 楼主,请不必放弃!你已经成功了!你会使用宏代码了!
* 之所以没有完全达到目的,是因为,在列举标点符 ...

      太感谢老师了!
      我又在代码中添加了几个可能会遇到的标点符号,现在所有的行已经能完美显示了。
       另外还有两个问题想请教老师:
      1.我每打开一个新的文档时都需要像23楼所说的那样操作一下吗?我发现当重新打开一个新的文档时,这个代码就没有了。
      2.可否劳烦老师重新制作一下那个压缩文件,把一些可能会遇到的符号都添加进去,这样就不用每次都去添符号了。我添加了符号的那串代码如图所示。
      
     
55.jpg

TA的精华主题

TA的得分主题

发表于 2024-8-10 20:23 | 显示全部楼层
这是我的代码,不需要添加标点符号,你可以试试效果: image.png

  1. Sub 返回只有一个字的行的数量()
  2.     Dim p As Paragraph
  3.     Dim n As Long
  4.     For Each p In ActiveDocument.Content.Paragraphs
  5.         p.Range.Select
  6.         With Selection
  7.             .Collapse 0
  8.             .MoveLeft Unit:=wdCharacter, count:=1, Extend:=wdMove
  9.             .HomeKey Unit:=wdLine, Extend:=wdExtend
  10.             If 汉字数量(.Range.text) <= 1 Then
  11.                 .Range.Font.ColorIndex = 3
  12.                 n = n + 1
  13.             End If
  14.         End With
  15.     Next
  16.     MsgBox "只有一个汉字的行数:" & n
  17. End Sub


  18. Function 汉字数量(inputString As String) As Long
  19.     Dim regEx As Object
  20.     Dim matches As Object
  21.     Dim count As Long
  22.    
  23.     ' 创建正则表达式对象
  24.     Set regEx = CreateObject("VBScript.RegExp")
  25.    
  26.     ' 设置正则表达式模式为匹配汉字
  27.     regEx.Pattern = "[\u4E00-\u9FFF]"
  28.     regEx.Global = True
  29.    
  30.     ' 执行匹配
  31.     Set matches = regEx.Execute(inputString)
  32.    
  33.     ' 汉字数量即为匹配的数量
  34.     count = matches.count
  35.    
  36.     汉字数量 = count
  37. End Function
复制代码
另外,代码放在Normal中,所以Word文档都可用,如果只放在某一个文档中,只有该文档可用
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-10 21:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
       老师辛苦了,感谢一再帮忙!
       试了下,完全没有问题。而且这个代码不用输入标点符号,打开新的文档也能找到,特别适用于我这种基础差的笨人!
       经过这几天您和“413191246se”老师的指导,我自己试着录制了一个宏代码。以前有项工作每次需要操作十几分钟,而且要在各个文档反复的操作,现在录制了代码,就可以让它自动操作了,实在太好了!以前居然一点也不知道宏这个事物。
       再次向您和“413191246se”老师表示衷心的感谢!

TA的精华主题

TA的得分主题

发表于 2024-8-10 21:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 413191246se 于 2024-8-10 22:03 编辑

* 楼主,以后再打开另一个文档时,如果仍然需要这种功能,只须:
* 点击“开发工具”选项卡——“宏”——找到“宏名”列表框里的"a0809_Chn_Punc"并点击一下,再点击右面的“运行”按钮就可以了!
* 如果想保存代码,只须在左面的小窗中,点击“M0809”,再点击右键选择“导出文件”,然后找个地方“保存”即可,这样就不怕代码丢失了!
*      
* 楼主,如果这个宏,你经常使用,怕麻烦,那么有一个更好的办法:(请按照步骤来做)
* 右键点击 Word 标题栏(即第一行),选择“自定义快速访问工具栏”,
* 左面:“从下列位置选择命令”——下拉命令选择“宏”——在下面的列表中找到“Normal.M0809.a0809_Chn_Punc”,点击之。
* 再按中间的“添加>>”按钮,可以看到右面已经添加了这个宏。
* 点击“修改”,给这个宏找一个按钮,哪个好看你就点击一下吧!然后按“确定”,再按“确定”关闭对话框。
* 这时,你会看到 Word 标题栏上多了一个好看的按钮,这就是你喜欢的宏的图标!
* 打开任意想要处理的文档,点击该图标,试试看!是不是一键秒杀?
*   
* 如何导入已经保存并导出的宏代码模块呢?只须:按 Alt + F11 组合键打开 VBE(VB代码编辑器),再点击“文件”菜单——“导入文件”——找到过去保存的(导出的)文件,点击“打开”按钮即可(比如:M0809.bas)。
*   
* 如何找到 VBA 宏代码?——点击“开发工具”——点击“宏”——进入“宏名”列表(前面两步也可以改为:按 Alt + F8 组合键直接进入“宏名”列表),找到“a0809_Chn_Punc”宏名,点击之,再点击右面的“运行”按钮即可执行该宏(在使用宏前,要先打开要处理的文档)。
*         
* 楼主,也请认真测试一下“过客”老师的代码。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-10 22:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
过客fppt 发表于 2024-8-10 20:23
这是我的代码,不需要添加标点符号,你可以试试效果:

另外,代码放在Normal中,所以Word文档都可用,如 ...

      老师辛苦了,感谢一再帮忙!
      试了下,显示完全没问题。
      另外感觉论坛发贴是不是有问题,明明回复了贴子却看不见。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-10 23:16 | 显示全部楼层
413191246se 发表于 2024-8-10 21:40
* 楼主,以后再打开另一个文档时,如果仍然需要这种功能,只须:
* 点击“开发工具”选项卡——“宏”—— ...

       多谢老师耐心指导!
       您和“过客”老师给出的代码我都导入word了。我用同一个文本测试了一下,两个代码都相当完美,“过客”老师的代码运行后还能给出行的具体数字,实在是太方便了。

TA的精华主题

TA的得分主题

发表于 2024-8-11 06:36 来自手机 | 显示全部楼层
wytsxh 发表于 2024-8-10 22:40
老师辛苦了,感谢一再帮忙!
      试了下,显示完全没问题。
      另外感觉论坛发贴是不是有问 ...

不客气,回复看不见是因为要审核通过才能显示,特别是代码要审核更长时间,可能是防止宏病毒吧。恭喜你进入了自动化办公的大门,其实很多操作都可以通过VBA实现,欢迎继续发布新的问题

TA的精华主题

TA的得分主题

发表于 2024-8-11 06:57 来自手机 | 显示全部楼层
wytsxh 发表于 2024-8-10 23:16
多谢老师耐心指导!
       您和“过客”老师给出的代码我都导入word了。我用同一个文本测试了一 ...

在代码中,如果你不要标上颜色,把这一行:
.Range.Font.ColorIndex = 3
最后的3改为1,或者删除这行,就可以了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-11 09:07 | 显示全部楼层
过客fppt 发表于 2024-8-11 06:36
不客气,回复看不见是因为要审核通过才能显示,特别是代码要审核更长时间,可能是防止宏病毒吧。恭喜你进 ...

       多谢老师鼓励!之前还曾想要放弃,现在想来实在是惭愧!
       在使用老师的代码中,我无意中发现一个有趣的问题:代码运行后,会把单独占一行的“段落标记”或者单独占一行的“空格”全都视为需要显示的“行”计数在内。删除文本最末尾的“段落标记”或者段与段之间不留空格,这个问题就没有了。

TA的精华主题

TA的得分主题

发表于 2024-8-11 10:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wytsxh 发表于 2024-8-11 09:07
多谢老师鼓励!之前还曾想要放弃,现在想来实在是惭愧!
       在使用老师的代码中,我无意中发 ...

是的,代码的逻辑是循环每个段落,对每个段落的最后一行检测,看是否符合要求,当时没有考虑到空行的情况
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 16:18 , Processed in 0.034620 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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