CommandButton в Word'е

Программирование на Visual Basic for Applications
inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

CommandButton в Word'е

Сообщение inq » 13.04.2006 (Чт) 9:50

Уважаемые гуру ВБА, возникла пара вопросов, подскажите, пожалуйста.

В документе есть таблица, в первом стоблце которой в каждой строке содержится CommandButton. Вопрос - как по имени CommandButton'a определить номер строки, в которой он содержится?

И дополнительно
После закрытия/открытия документа почему то "слетели" имена всех контролов (чекбоксов, буттонов и др.) - ко всем в конце добавилась единица. Соответствено все связанные ивенты перестали работать. При попытке "вернуть" исзодные имена - ругается "ambiguous name detected". Пишу сразу - никаких копипастов не делал и дубляжа контролов нет. Кто-нить сталкивался с таким? Что можно сделать? Office2002 SP-2.
Заранее спасибо )

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2006 (Чт) 10:59

Ответ - дать кнопкам такие имена, чтобы было понятно, в какой они строке.

И дополнительно - у меня так получалось, если кнопке снять флаг "Поверх текста".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 13.04.2006 (Чт) 11:20

GSerg писал(а):Ответ - дать кнопкам такие имена, чтобы было понятно, в какой они строке.

Не очень хорошо - хочется унификации, не привязываясь к конкретному имени.

через номер ячейки к кнопке добираемся
tables(1).cells(i, 1).Range.InlineShapes(1).OLEFormat.Object.Name
Возможно ли обратный переход - от имени кнопки к номеру ячейки?

И дополнительно - у меня так получалось, если кнопке снять флаг "Поверх текста".


Да, когда меняешь способ расположения объекта - тот преобразуется в shape и к имени добавляется злополучный номер. Только вот я не преобразовывал их...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2006 (Чт) 11:54

Ну тада ThisDocument.InlineShapes(i).Range.Rows(1).Index
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 13.04.2006 (Чт) 12:19

ThisDocument.InlineShapes(i).Range.Rows(1).Index

Только вот i неизвестно :)

Пояснение - нажата кнопка, как узнать в какой строке находится нажатая кнопка?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2006 (Чт) 12:24

Ну и чё? Это ж суть...
Массивы контролов в vba не поддерживаются, поэтому обработчик свой у каждой кнопки. В лучшем случае, обработчик выглядит так:
Код: Выделить всё
private sub CommandButton1_Click
  CommonHandler CommandButton1
end sub

private sub CommandButton2_Click
  CommonHandler CommandButton2
end sub

private sub CommonHandler(byval c as commandbutton)
  msgbox с.range.rows(1).index
end sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 13.04.2006 (Чт) 12:44

GSerg
нет у CommandButton св-ва range...
А через inlineshape - неизвестен номер данной кнопки в этом семействе. Можно, конечно, перебирать всю коллекцию в поисках объекта с данным именем...

Похоже все-таки придется отказаться от унификации :(

Спасибо.

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 13.04.2006 (Чт) 13:31

http://bbs.vbstreets.ru/viewtopic.php?t ... mrightcell
или
имякнопки.BottomRightCell.Cells.Row

:oops: не то
Последний раз редактировалось $€rg 13.04.2006 (Чт) 16:32, всего редактировалось 1 раз.
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2006 (Чт) 14:51

Значит у тебя не те кнопки, что у меня...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 13.04.2006 (Чт) 16:23

Значит у тебя не те кнопки, что у меня...


Обычные вордовские commandbutton'ы


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

    TopList