Как получить имя объекта на котором кликнули?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

Что-то ничего в инете не найду, может запрос не так формулирую.
В общем, в книге эксель на форме есть сотня Label, как получить name или caption того элемента, по которому щелкнули мышкой или еще как-то нужный элемент идентифицировать, что кликнули именно его?
Что-то ничего, в голову не приходит, кроме как в событии label_click каждого элемента присваивать какой-нибудь переменной уникальное значение затем передавать в вызываемую функцию... но ведь это же долго и некрасиво)
Подскажите?
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

RomaS
для каждого Label написать код:

Код: Выделить всё

Private Sub Label1_Click()
MsgBox Label1.Name
End Sub
RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

вот именно от этого и хотелось уйти. писать для каждого. а их сотня...

Ну тоесть в событии labelX_Click()
должно выполняться что-то типа: I = Useform1.ActiveControl.Name
А вот есть ли в ВБ что-то подобное??
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

RomaS
да я понял твою идею, подумаю.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Почитайте про классы в VBA и использование ключевого слова WithEvents в объявлении переменных.
На форуме куча примеров.
Андрей Энтелис,
aentelis.livejournal.com
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

>кроме как в событии label_click каждого элемента присваивать какой-нибудь переменной уникальное значение затем передавать в вызываемую функцию... но ведь это же долго и некрасиво)

Сколько их штук на форме? а создавать их на форме долго? красиво? :)
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

Aent
пацак - дай ещё ключевые слова.
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Примеры использования классов для решения подобных задач можно поглядеть здесь:
http://programmersforum.ru/showpost.php ... ostcount=8
http://www.programmersforum.ru/showpost ... ostcount=9
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

Создавались они копипастом))) их caption динамически меняются в зависимости от некоторых параметров, а при клике на каком-то появляется контекстное меню, вот для этого меню и надо идентифицировать объект под курсором...

Aent, EducatedFool, за подсказку спасибо, буду искать.... пацак))))))
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Если тема еще актуальна, то есть один примерчик .xlsm от Уокенбаха - на форме несколько кнопок, после щелчка на каждой из них появляется сообщение с именем и заголовком кнопки. Куда прислать?
Ответить