Прошу помочь в составлении макроса для Word по следующей задаче:
Есть документ с несколькими таблицами. В ячейках таблицы имеется разнообразный текст.
Стандартная функция "Найти" - ищёт "текст".
Найдя - курсор физически становится в ячейку с найденным "текстом".
Можно ли в VBA по месту расположения курсора определить в какой таблице стоит курсор (название, номер, или как там обзываются таблицы в Word)?
Код по определению порядкового номера таблицы, в которой находится курсор:
Код:
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
Администратор, благодарю! Из Ваших примеров, кажется, почерпнул информацию, необходимую мне в дальнейшем.