ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将光标定位到第1节(Section)的末尾?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-7 09:30 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 xiaoyouxi01 于 2018-8-7 09:31 编辑

文档已使用分节符,分为若干节(Section)。

不论当前光标定位在何处,运行代码后,将光标定位到第1节(Section)的末尾,即红色X处。
QQ截图20180807093104.png

请教下,vba代码能否实现?该如何写最简洁?

test.rar (15.51 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

发表于 2018-8-7 10:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub gotoSection1_end()
  2.     Dim doc As Document, Rng As Range
  3.     Set doc = ActiveDocument
  4.     With doc.Sections(1)
  5.         If Len(.Range) > 1 Then
  6.             Set Rng = doc.Range(.Range.End - 2, .Range.End - 2)
  7.             Rng.Select
  8.         Else
  9.             msgbox "首节除分节符外无其它内容,无法定位。"
  10.         End If
  11.     End With
  12. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-7 12:51 | 显示全部楼层

非常感谢!原来可以这样用range!

但现在有个问题:

当有多个分节符,开启修订模式,删除第1个分节符。

所以sections(1)的末尾会变成“原先被删除的分节符的位置”。
QQ截图20180807125008.png

因为单位有要求,要保留修订痕迹,不能接受修订。在这种有修订的情况下,该如何定位定位到实际第1节的末尾呢?

test2.rar (10.48 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

发表于 2018-8-7 14:45 | 显示全部楼层
xiaoyouxi01 发表于 2018-8-7 12:51
非常感谢!原来可以这样用range!

但现在有个问题:

就是在第一节末,你把修订点开就是了。你隐藏了,光标就是出现在那个位置,没毛病。
你还是按图一的做法,光标要在哪,把个X,这样我更能明白你想让光标停在哪。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-7 17:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 xiaoyouxi01 于 2018-8-7 17:34 编辑
ming0018 发表于 2018-8-7 14:45
就是在第一节末,你把修订点开就是了。你隐藏了,光标就是出现在那个位置,没毛病。
你还是按图一的做法 ...


按2楼的代码,光标会定位到下图中的小红圈处,不对。



希望是可以定位到下图红色X处。新的附件标了红色X。
QQ截图20180807172921.png


test3.rar (14.02 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2018-8-8 17:26 | 显示全部楼层
xiaoyouxi01 发表于 2018-8-7 17:30
按2楼的代码,光标会定位到下图中的小红圈处,不对。

知道了,就是跳到第二节末,这个你自己会不会改?不会改就等我有空再写。这两天忙。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-8 18:44 | 显示全部楼层
ming0018 发表于 2018-8-8 17:26
知道了,就是跳到第二节末,这个你自己会不会改?不会改就等我有空再写。这两天忙。

直接改第二节末我是会的。

但问题是:实际文档的第1节,究竟是Section几,这个不确定。。。

①如果文档没有修订内容,那第1节就是Section(1)。
②如果文档有修订内容,但是修订中没有被删除的分节符,那第1节也是Section(1)。
③如果文档有修订内容,并且修订中有1个被删除的分节符,那第1节就是Section(2)。
④如果文档有修订内容,并且修订中有N个被删除的分节符,那第1节就是Section(1+N)。

针对这几种情况,代码要做到通用,就不知道如何去做判断了。。。

等大神有空再帮忙看看~多谢多谢!!!

TA的精华主题

TA的得分主题

发表于 2018-8-9 08:18 | 显示全部楼层
xiaoyouxi01 发表于 2018-8-8 18:44
直接改第二节末我是会的。

但问题是:实际文档的第1节,究竟是Section几,这个不确定。。。

思路很清晰嘛,照着你的思路做就可以了。

TA的精华主题

TA的得分主题

发表于 2018-8-9 09:13 | 显示全部楼层
  1. Sub gotoSection_end_main()
  2.     Dim doc As Document, Rng As Range, SecCount%, RevCount%, SecNum%
  3.     Set doc = ActiveDocument
  4.     SecCount = doc.Sections.Count
  5.     SecNum = 1
  6.     If SecCount = 1 Then
  7.         Selection.EndKey wdStory '如果只有一节,光标定位到文末
  8.     Else
  9.         Do While SecNum < SecCount + 1
  10.             If gotoSection_end(SecNum) Then Exit Do
  11.             SecNum = SecNum + 1
  12.         Loop
  13.     End If
  14. End Sub

  15. Function gotoSection_end(n)
  16.     Dim doc As Document, Rng As Range, Findit As Boolean
  17.     Set doc = ActiveDocument
  18.     With doc.Sections(n)
  19.         If Len(.Range) > 1 Then
  20.             Set Rng = doc.Range(.Range.End - 1, .Range.End - 1)
  21.             If Rng.Characters.First.Previous.Text = Chr(13) Then Rng.Move wdCharacter, -1
  22.             If Rng.Revisions.Count = 0 Then
  23.                 Rng.Select
  24.                 Findit = True
  25.             End If
  26.         Else
  27.             msgbox "首节除分节符外无其它内容,无法定位,光标返回首页。"
  28.             Selection.HomeKey wdStory
  29.             Findit = True
  30.         End If
  31.     End With
  32.     gotoSection_end = Findit
  33. End Function
复制代码


试一下这个

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-9 12:38 | 显示全部楼层

还是不行诶。。。我试了这段代码,定位是不对。。
这段代码运行后,光标定位到了红圈的位置,并没有定位到红色X处。。

傲游截图20180809123633.png

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 12:47 , Processed in 0.053640 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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