Word и номер таблицы.

Программирование на Visual Basic for Applications
GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Word и номер таблицы.

Сообщение GDK » 25.06.2009 (Чт) 11:42

Интересно кто как решает такую вещь: Определить номер таблицы, в которой находится курсор или что-нибудь выделено.
Я делаю это так: Определяю переменную-диапазон TmpRng as Word.Range. Присваиваю ему диапазон выделения. Проверяю номер стартовой или конечной ячейки в этом диапазоне - если ноль, то выход. Если нет, то расширяю диапазон до wdTable. Теперь TmpRng.Tables(1).ID - номер нужной таблицы. Может есть способ проще?

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Word и номер таблицы.

Сообщение viter.alex » 25.06.2009 (Чт) 15:28

Что имеется ввиду под номером таблицы? Порядковый или ID?
Если порядковый, тогда одной строкой:
Код: Выделить всё
ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count

Если ID, то тоже одной строкой, но чуть сложнее:
Код: Выделить всё
ActiveDocument.Tables(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count).ID
Лучше день потерять — потом за пять минут долететь!

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Re: Word и номер таблицы.

Сообщение dormouse » 25.06.2009 (Чт) 15:46

ну если номер таблицы ты таки определил, то я так понимаю, что проблема узнать, в таблице ли стоит курсор?
можно так:
Код: Выделить всё
If Selection.Information(wdWithInTable) = True Then
...
VBA, MSA97

GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Re: Word и номер таблицы.

Сообщение GDK » 25.06.2009 (Чт) 18:08

Во как!
Значит ссылка на таблицу, будет выглядеть так:

Код: Выделить всё
Dim MyTabl as Word.Table
set MyTabl = ActiveDocument.Tables(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count)

Здорово одной строчкой. А я так не догодался. Теперь буду так делать.

А как делать проверку что курсор в таблице - это я знаю. Но всё равно спасибо за ответ.

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Word и номер таблицы.

Сообщение Ципихович Эндрю » 07.04.2010 (Ср) 19:39

Скажите кто знает эти решения оба верны?
Какакя между ими разница?
Номер_текущей_таблицы_где_находится_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count
Номер_текущей_таблицы_где_находится_курсор = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Word и номер таблицы.

Сообщение Ципихович Эндрю » 07.04.2010 (Ср) 20:15

Посмотрел так получается это утверждение: Номер_таблицы_где_расположен_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count не верно всегда равно 0??

GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Re: Word и номер таблицы.

Сообщение GDK » 08.04.2010 (Чт) 12:59

ActiveDocument.Range.Start - это начало документа, т.е. 0
Selection.Start - это начальная позиция в выделении.

Посмотрел так получается это утверждение: Номер_таблицы_где_расположен_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count не верно всегда равно 0??

Нет. Не ноль будет если в документе есть таблица и есть текст за таблицей и пользователь выделил кусок этого текста, после чего был запущен макрос, содержащий вашу строчку.

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Word и номер таблицы.

Сообщение Ципихович Эндрю » 08.04.2010 (Чт) 17:54

Утверждение не верно и более добавить нечего
Номер_таблицы_где_расположен_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count
не может быть знак равенства в твете от 25.06.2009 (Чт) 18:28


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 9

    TopList