vba宏:我的光标在哪个表中?

时间:2013-05-20 10:21:36

标签: vba ms-word word-vba

编写宏我发现我需要跳过表格内容并在此之后将光标放在右边,为此我使用的代码为

     Selection.Tables(cnt).Select
     Selection.Collapse WdCollapseDirection.wdCollapseEnd

这里,cnt是一个计数器值,每次找到一个表时会增加,但如果在选择页面中运行宏,那我怎么知道我的光标所在的第n个表的数量。

2 个答案:

答案 0 :(得分:4)

重要!此解决方案允许您查找文档中当前选定的表格的数量。

将此功能添加到您的任何模块:

Function WhichTableNo(RNG As Range)

If RNG.Tables.Count > 0 Then
    Dim DOC As Document
    Set DOC = RNG.Parent

    Dim rngTMP As Range
    Set rngTMP = DOC.Range(0, RNG.Tables(1).Range.End)

    WhichTableNo = rngTMP.Tables.Count
Else
    WhichTableNo = "Not in the table"
End If
End Function

并检查表号,你可以这样称呼它:

debug.Print WhichTableNo(Selection.Range)

因此,您将获得当前所在的桌子数量。

答案 1 :(得分:4)

光标所在的表格始终为Selection.Tables(1)

If Selection.Tables.Count > 0 Then
  Dim r As Range
  Set r = Selection.Tables(1).Range
  r.Collapse wdCollapseEnd

  r.Select
End If

如果是嵌套表,您可能还需要检查Selection.Tables.NestingLevel。以下将退出任意数量的嵌套表,将光标放在最外面的表之后:

If Selection.Tables.Count > 0 Then
  Dim r As Range, i As Long

  Set r = Selection.Range

  For i = 1 To r.Tables.NestingLevel
    Set r = r.Tables(1).Range
    r.Collapse wdCollapseEnd
  Next

  r.Select
End If