Автор Тема: Как в VBA определить порядковый номер word-таблицы, в которой находится курсор?  (Прочитано 4316 раз)

Nekto_Shket

  • Гость
Прошу помочь в составлении макроса для Word по следующей задаче:
Есть документ с несколькими таблицами. В ячейках таблицы имеется разнообразный текст.
Стандартная функция "Найти" - ищёт "текст".
Найдя - курсор физически становится в ячейку с найденным "текстом".
Можно ли в VBA по месту расположения курсора определить в какой таблице стоит курсор (название, номер, или как там обзываются таблицы в Word)?

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Код по определению порядкового номера таблицы, в которой находится курсор:
Код:
Sub Main()

    Dim tblSel As Word.Table, lngTblIndex As Long
    Dim lngStart As Long
    Dim i As Long
   
   
    '1. Vba-именование таблицы, в которой находится курсор.
    Set tblSel = Selection.Tables(1)
   
    '2. Проверка, является ли таблица, в которой курсор, вложенной.
        ' Вложенные таблицы не относятся к документу и с ними нужно по-другому работать.
    If tblSel.NestingLevel <> 1 Then
        MsgBox "Таблица, в которой находится курсор, вложенная.", vbExclamation
        Exit Sub
    End If
   
    '3. Запись в переменную позиции начала таблицы.
    lngStart = tblSel.Range.Start
   
    '4. Просмотр всех таблиц в поисках таблицы с нужным началом.
    For i = 1 To ActiveDocument.Tables.Count Step 1
        If ActiveDocument.Tables(i).Range.Start = lngStart Then
            ' Запись порядкового номера таблицы в переменную.
            lngTblIndex = i
            ' Выход из цикла.
            Exit For
        End If
    Next i
   
    '5. Здесь, в переменной "lngTblIndex", у нас есть порядковый номер таблицы, в которой находится курсор.

End Sub

Nekto_Shket

  • Гость
Администратор, благодарю! Из Ваших примеров, кажется, почерпнул информацию, необходимую мне в дальнейшем.