算是一个关于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。