Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 433
от 15.12.2006, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 218, Экспертов: 25
В номере:Вопросов: 1, Ответов: 2


Вопрос № 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное