ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怪事:用得好好的一段程序,今天发现不灵

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-5 17:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
weiyingde 发表于 2019-8-5 17:05
但我需要撇开的是段首的^13,即将查找到文本的开头向后移动一个字符位置,
是不是这样的:
.Parent.st ...

您的钻研走上正道了:是的。

Move、MoveStart、MoveEnd、MoveStartWhile、MoveEndUntil、StartOf和EndOf都是对Range这一对象进行的操作,您所说的.Parent是查找到的文本内容,它就是一个Range。结论:MoveStart和MoveEnd等的操作只是改变了该Range对象的起始位置和(或)结束位置,Range还是那个Range,只是它变长了或变短了(文本串的字符数多了或少了)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-5 17:14 | 显示全部楼层
本帖最后由 weiyingde 于 2019-8-5 17:16 编辑

我对“.Parent”对象糊里糊涂,".Collapse"".MoveEnd”也是不明不白,我想把你的代码融入进去,不知能否完美解决问题。
我先试试,不行再求你。

Sub 重编序号()
With ActiveDocument.Content.Find
    Do While .Execute("^13[0-9]{1,}[.、.]{1}[!^13]@^13", , , 1) ', , , , , , "2", 2
         .Parent.movestart wdCharacter,1
          tx = .Parent.Text
          If InStr(tx, ".") <> 0 And InStr(tx, ".") <= 6 Then
             ks = InStr(tx, ".")
          ElseIf InStr(1, tx, ".") <> 0 And InStr(tx, ".") <= 6 Then
             ks = InStr(1, tx, ".")
          Else
             ks = InStr(1, tx, "、")
          End If
          tx2 = Right(tx, Len(tx) - ks + 1)
          n = n + 1
          .Parent.Text = n & tx2
    Loop
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2019-8-5 17:17 | 显示全部楼层
weiyingde 发表于 2019-8-5 17:14
我对“.Parent”对象糊里糊涂,".Collapse"".MoveEnd”也是不明不白,我想把你的代码融入进去,不知能否完 ...

您不去注意并体会9楼代码?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-5 17:24 | 显示全部楼层
gbgbxgb 发表于 2019-8-5 17:17
您不去注意并体会9楼代码?

好的,太感谢了。把你的代码理解了,可能要解决其他的一些问题。

TA的精华主题

TA的得分主题

发表于 2019-8-5 17:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
[0-90-9]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-5 17:42 | 显示全部楼层
本帖最后由 心电感应 于 2019-8-5 17:55 编辑
gbgbxgb 发表于 2019-8-5 17:03
只要如下即可:
Sub 重编序号()
    Dim n&

好简洁,很好,我可能一时还消化不了。
另外我还有其他的要求。
如果中间有光有一个题号而后面没有题目的,那么空题号就不参与重排。
比如
1.《三国演义)开篇词。
2.李白在。
4.
3.《论语》中“。
4.杜甫《将。
那么应将:.Execute("^13[0-9]{1,}[.、.]", , , 1)  改为  .Execute("^13[0-9]{1,}[.、.][!^13]{1,}", , , 1)
那么其他的代码在你的代码基础上又作何改动呢?
盼再次指点。

TA的精华主题

TA的得分主题

发表于 2019-8-5 19:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
* 呵呵! 我挑 魏老师 一句!“解决这个问题还是得你用的。”
* 虽然 gbgbxgb 老师,现在我才认识到非常厉害,但 魏老师 你这个问题不算什么大问题,我疏忽了,没注意到,因为我在编自动排版宏时,也试过用查找的方法来设置标题各个级别,必须前面是 ^13,只要加一句 .MoveStart 即可回缩一字符。
* 新的代码如下:全文前加一个回车符,处理完毕,再删除:(以后 魏老师 如有什么问题,尽管上来求帮,我有时间就会帮助你的;小问题不必麻烦 gbgbxgb 老师了!)
  1. Sub a经典代码_查找_通用_ActiveDocument_题号_自动编号()
  2.     Dim n&
  3.     With ActiveDocument.Content.Find
  4.         .Parent.InsertBefore Text:=vbCr
  5.         .ClearFormatting
  6.         .Text = "^13[0-90-9]{1,}[..、]"
  7.         .Forward = True
  8.         .MatchWildcards = True
  9.         Do While .Execute
  10.             With .Parent
  11.                 .MoveStart
  12.                 n = n + 1
  13.                 .Text = n & "."
  14.                 With .Font
  15.                     .Name = "Arial"
  16.                     .Bold = True
  17.                     .Color = wdColorRed
  18.                 End With
  19.                 .Characters.Last.Font.NameFarEast = "黑体"
  20.                 .Start = .End
  21.             End With
  22.         Loop
  23.         .Parent.Parent.Paragraphs.First.Range.Delete
  24.     End With
  25. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-8-5 19:24 | 显示全部楼层
weiyingde 发表于 2019-8-5 17:42
好简洁,很好,我可能一时还消化不了。
另外我还有其他的要求。
如果中间有光有一个题号而后面没有题目 ...

不明白。

您已经修改了.Execute语句,该语句本身就排除了光有题号无实质内容的段落。

早先我说您研究上道了,可您回复说消化不了9楼的代码,加之16楼提出的奇怪问题,我看,您的学习方法有问题。

关于消化9楼代码提示下:
您在每句下方添加一句.Select,然后按F8逐步运行并观察文档的变化。
如果还不理解,我想您是不是不懂英文,如果您不知道Move、MoveStart、MoveEnd和StartOf等如此简单词汇的意思,那么您先学些英文;如果懂英文,那么就是您脑子不好使了,这就没什么好办法了。

TA的精华主题

TA的得分主题

发表于 2019-8-5 23:09 来自手机 | 显示全部楼层
^13[0-9]{1,}[.、.][!0-9^13]排除以小数开头的段落,如“8.9元钱买的……  ”

TA的精华主题

TA的得分主题

发表于 2019-8-5 23:12 来自手机 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 05:39 , Processed in 0.025686 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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