Schreibbüro Richter

Den Index einer Tabelle im Dokument bzw. in einem Storyrange mit VBA ermitteln

Beim Arbeiten mit Tabellen in Word benötigt man ab und zu den Index der Tabelle, in der die Einfügemarke (Selection) gerade steht. Leider haben Tabellen in Word keine ID-Eigenschaft, die man dafür verwenden könnte, und auch keinen Namen. Dazu dient die folgende Funktion, mit der man den Index einer Tabelle in dem Storyrange bestimmen kann, in dem die Einfügemarke gerade steht. Steht die Einfügemarke im Hauptteil (Body) des Dokuments, liefert die Funktion natürlich den Index im Hauptteil des Dokuments zurück.


Function fktTabellenIndex() As Integer  
' gibt 0 zurück, wenn im Storyrange keine Tabellen enthalten sind 
' gibt -1 zurück, wenn die Selection nicht in einer Tabelle steht 
' sonst den Index der Tabelle im Storyrange 
' © Nora Richter 2008  

    Dim i As Integer
    If Not Selection.Information(wdWithInTable) Then
        fktTabellenIndex = -1
        Exit Function 
    End If

    If ActiveDocument.StoryRanges(Selection.StoryType).Tables.Count < 1 Then
        fktTabellenIndex = 0
        Exit Function 
    End If

    For i = 1 To ActiveDocument.StoryRanges(Selection.StoryType).Tables.Count
        If ActiveDocument.StoryRanges(Selection.StoryType).Tables(i).Range.IsEqual(Selection.Tables(1).Range) Then
            fktTabellenIndex = i
            Exit For
        End If
    Next i

End Function  

Sub Aufruf()  

    MsgBox fktTabellenIndex

End Sub