Вопрос № 66232: Здравствуйте! На рабочем листе много кнопок (Button1,Button2,Button3,Button4 и тд) встроенных в ячейки этого листа.
У всех этих кнопок один обработчик OnAction(срабатывает по нажатию на кнопку). Можно ли как-нибудь определить
какая из кнопок...
Вопрос № 66.232
Здравствуйте! На рабочем листе много кнопок (Button1,Button2,Button3,Button4 и тд) встроенных в ячейки этого листа.
У всех этих кнопок один обработчик OnAction(срабатывает по нажатию на кнопку). Можно ли как-нибудь определить
какая из кнопок была нажата??
Приложение:
Отправлен: 09.12.2006, 15:31
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Макаренко Е.В.
Здравствуйте, Rewer8!
Почему бы не сделать на каждую кнопку свой маленький обработчик, а уже из него вызывть общий обработчик с аргументом, включающем индекс кнопки...
--------- осторожность, точность... и горит все синим пламенем! :))
Ответ отправил: Макаренко Е.В. (статус: Практикант)
Ответ отправлен: 11.12.2006, 10:07
Отвечает: HookEst
Здравствуйте, Rewer8!
Если количество кнопок ограничено(допустим максимум 100 кнопок), то можно вручную(или каким скриптом) написать:
Sub BtnClk0()
Call BtnOnClick(0)
End Sub
Sub BtnClk1()
Call BtnOnClick(1)
End Sub
...
...
Sub BtnClk100()
Call BtnOnClick(100)
End Sub
и присваивать эти обработчики кнопкам при их создании в зависимости от индекса.
В Access я так писал прямо в модуль проекта из VBA во время выполнения, в Excel пока RunTime не получалось, только вручную.
Но может Вам отказаться от кнопок? И эмулировать их с помощью гиперссылок?
Создаете в нужной ячейке Hyperlink например на саму эту ячейку, с помощью шрифта, границ и заливки делаете ячейку похожей на кнопку,
и тогда в обработчике Worksheet_FollowHyperlink мы будем иметь непосредственно саму ссылку на которую нажали.
Есть недостаток, что при переходе по ссылке сбивается Selection, и если он Вам нужен то придется в Worksheet_SelectionChange сохранять последние Selection.
Я так делал до 300 чекбоксов на листе, уже несколько лет никто не жалуется.
Если что, пишите.
Успехов.
Ответ отправил: HookEst (статус: 9-ый класс)
Ответ отправлен: 13.12.2006, 12:34