光标在普通段落中则返回光标所在段落行数,在表格单元格中则返回该单元格内容行数

这是一个关于Word VBA的函数,用于获取光标所在位置的行数信息。如果光标在普通段落中,函数返回光标所在段落的行数;如果在表格单元格内,则返回单元格内容的行数。通过使用Selection.Range和Information属性,可以获取到各种详细信息,如 wdFirstCharacterLineNumber 和 wdWithInTable 等,从而实现所需功能。
摘要由CSDN通过智能技术生成

算是一个关于range.information的笔记:编写一个函数,实现光标在普通段落中则返回光标所在段落行数,在表格单元格中则返回该单元格内容行数的功能

Function GetLines()
    Dim lines, lineStart, lineEnd As Integer
    With Selection.Range
        If .Information(wdWithInTable) Then
            With Selection.Cells(1).Range
                .MoveEnd wdCharacter, -1
                lineStart = .Information(wdFirstCharacterLineNumber)
                .Collapse wdCollapseEnd '如果使用wdCollapseEnd折叠引用整个段落的区域, 则该范围位于结束段落标记之后 (下一段的开头)
                lineEnd = .Information(wdFirstCharacterLineNumber)
            End With
            lines = lineEnd - lineStart + 1
        Else
           If Selection.Paragraphs.Count > 1 Then'光标选择了超过一个段落,返回选择区内容行数
                lines = .ComputeStatistics(WdStatistic.wdStatisticLines)
            Else'未建立选区或选择内容不超过1个段落
                lines = Selection.Paragraphs(1).Range.ComputeStatistics(WdStatistic.wdStatisticLines)
            End If
        End If
    End With
    GetLines = lines
End Function

Selection即光标(选区实质上是一个扩展了的光标),其Range属性即为Range对象,另外,Document.Range属性也可以构造出Range对象,掌握了Range对象,word VBA基本上就大致掌握了。多个对象均可以调用Information属性返回很多有用的内容,下面是复制的MSDN相关页面,可供查阅:

名称

说明

wdActiveEndAdjustedPageNumber

1

返回包含指定的所选内容或区域的活动结尾的页面数。 如果设置起始页码或进行其他手动调整,则返回调整的页码(与wdActiveEndPageNumber不同)。

wdActiveEndPageNumber

3

返回包含指定的选定内容或范围,从文档的开头开始计数的活动端的页面数。 对页码编号的任何手动调整都将被忽略(与wdActiveEndAdjustedPageNumber不同)。

wdActiveEndSectionNumber

2

返回节号,在该节中包含了指定的所选内容或区域的活动结尾。

wdAtEndOfRowMarker

31

如果指定的所选内容或区域位于表格的行结尾标记处,则该参数返回 True 。

wdCapsLock

21

如果 Caps Lock 有效,则该参数返回 True 。

wdEndOfRangeColumnNumber

17

返回表格列号,在该表格列中包含指定的所选内容或区域的结尾。

wdEndOfRangeRowNumber

14

返回表格行号,在该表格行中包含指定的所选内容或区域的结尾。

wdFirstCharacterColumnNumber

9

返回指定的所选内容或区域中第一个字符的位置。 如果所选内容或区域是折叠的,则返回紧靠所选内容或区域右侧的字符编号(该编号与状态栏中"列"后面的字符列数相同)。

wdFirstCharacterLineNumber

10

返回指定的所选内容或区域中第一个字符的位置。 如果所选内容或区域是折叠的,则返回紧靠所选内容或区域右侧的字符编号(该编号与状态栏中"行"后面的字符行数相同)。

wdFrameIsSelected

11

如果所选内容或区域为整个图文框或文本框,则该参数返回 True 。

wdHeaderFooterType

33

返回一个值,该值指示包含了指定所选内容或区域的页眉或页脚的类型。 有关其他信息,请参阅"注解"部分中的表。

wdHorizontalPositionRelativeToPage

5

返回指定的所选内容或区域的水平位置。这是从所选内容或区域的左边缘到页面左边缘的距离,以磅为单位(1磅 = 20 缇,72磅 = 1 英寸)。 如果所选内容或区域不在屏幕区域中,则返回-1。

wdHorizontalPositionRelativeToTextBoundary

7

返回指定所选内容或区域相对于周围最近的正文边界左边缘的水平位置,以磅为单位(1 磅 = 20 缇,72 磅 = 1 英寸)。 如果所选内容或区域不在屏幕区域中,则返回-1。

wdInBibliography

42

如果指定的所选内容或区域位于书目中,则该参数返回 True 。

wdInCitation

43

如果指定的所选内容或区域位于引文中,则返回 True 。

wdInClipboard

38

有关该常量的信息,请参阅包含在 Microsoft Office Macintosh Edition 中的语言参考帮助。

wdInCommentPane

26

如果指定的所选内容或区域位于批注窗格,则该参数返回 True 。

wdInContentControl

46

如果指定的所选内容或区域位于内容控件中,则该参数返回 True 。

当光标没有选择任何内容或者只选择了1个字符时,Selection.Characters.count =1。要判断是否选择了内容,可以测试Selection.Type= wdSelectionIP or Selection.Type=wdNoSelection。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yivifu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值