注意事项:第一个代码可以返回多段落选定区域的行号;第二个代码可以返回所选内容的第一个段落中的指定行号的文本内容. Dim LineCount As Integer Sub LinesCount() Dim l As String On Error Resume Next '如果光标未选中内容则将第一个光标所在段落选中 If Selection.Type = wdSelectionIP Then Selection.Paragraphs(1).Range.Select Application.ScreenUpdating = False '关闭屏幕更新 CommandBars("Word Count").Visible = True '打开字数统计工具栏 '执行字数统计(重新计数) CommandBars("Word Count").Controls(2).Execute '返回第一个列表框中的第六个数据 l = CommandBars("Word Count").Controls(1).List(6) '关闭字数统计 CommandBars("Word Count").Visible = False Application.ScreenUpdating = True '恢复屏幕更新 LineCount = Int(Mid(l, 1, Len(l) - 1)) '返回行数值 '返回所选段落(或光标所在段落)的行数 MsgBox "Selection Paragraphs(1)'s Line Count Is " & LineCount '返回指定行数的内容 MsgBox NumlineRange(LineNumber) End Sub '---------------------- Function NumlineRange(LineNumber As Variant) As Range Dim StRange As Long, EnRange As Long, SelStart As Range 0 LineNumber = InputBox("请输入你要定位的指定段落的行号", "Microsoft Word") If LineNumber = "" Then Exit Function Else LineNumber = LineNumber * 1 With Selection Set SelStart = ActiveDocument.Range(.Paragraphs(1).Range.Start, .Paragraphs(1).Range.Start Select Case LineNumber '行号数据 Case 0, Is > LineCount '大于指定段落的行数 MsgBox "行号过大或者过小的无效行号错误!", vbOKOnly + vbInformation GoTo 0 '重新开始 Case 1 '用户行号为 1 StRange = .Paragraphs(1).Range.Start '所选段落的起点 '所选段落的的第二行的起点(是 wdGoToNext) EnRange = .GoTo(what:=wdGoToLine, which:=wdGoToNext, Count:=LineNumber).Start Case Is = LineCount '用户行号为最后一行 '定位至所选段落的最后一行 StRange = .GoTo(what:=wdGoToLine, which:=wdGoToNext, Count:=LineNumber - 1).Start '所选段落的结束位置 EnRange = .Paragraphs(1).Range.End Case Else '其它 '返回用户行号的本行(wdGoToNext,所以要-1)的开始位置 StRange = .GoTo(what:=wdGoToLine, which:=wdGoToNext, Count:=LineNumber - 1).Start SelStart.Select '由于光标位置移动后,需要重新选定 '取得下一行的起始位置 EnRange = .GoTo(what:=wdGoToLine, which:=wdGoToNext, Count:=LineNumber).Start End Select '定义该用户指定行的区域 Set NumlineRange = ActiveDocument.Range(StRange, EnRange) End With End Function '----------------------