Тема: Множество CommandButon одна процедура обработки

На форме есть множество Кнопок..
возможно ли "Нажатие на любую" обрабатывать одной процедурой ?
иначе Перехватывать Нажатие на Кнопку с Возвратом Индекса и т.п
кнопка на форме CommandButon1
событие в модуле формы CommandButon1_Click()
кнопок на форме 100
событий CommandButonXX_Click() не меньше smile
а хотелось бы ОДНУ процедуру..на все Нажатия

Private Sub CommandButonXX_Click()
Dim КнопкаНомер As Integer
Do Case
   Case КнопкаНомер=1
   ......
EndCase
EndSub

Re: Множество CommandButon одна процедура обработки

> Сергей
У каждого контрола есть свойство
TabOrder...

Dim ctl as Control
Dim btn as CommandButton
For Each ctl in Me
If ctl.ObjectName is CommandButton
Set btn=ctl
Select Case btn.Tabordeк
Case...
End Case

Проверь по синтаксису
~'J'~

Re: Множество CommandButon одна процедура обработки

На VB можно создавать масив контролов и у этого всего массива 1 sub, может и VBA такое умеет. Во еще в VB есть такое, что форма может принимать все, что отправлялось ее детям, и тогда все равно куда нажал, что нажал, сообщение дойдет до родителя.

Re: Множество CommandButon одна процедура обработки

Когда-то пытался тоже нечто подобное создать (отсылку к одной процедуре по change любого из множества комбобоксов), но не получилось. В массив контролы организовать можно, но общую процедуру создать для события любого из его членов в VBA, по-моему, нельзя. Единственно, написать одну sub или function, и по нажатию любой кнопки ее вызывать. Ну а что за кнопка нажата - передавать в параметре (имя, или TabIndex и т.д.).
Но этот метод, хотя и несколько уменьшит код, все-равно запарен для сотни кнопок. А если они еще программно создаются и количество заранее неизвестно, то вообще не применим...

Re: Множество CommandButon одна процедура обработки

> AlexV
Сотни кнопок это конечно круто, но на кой они, если не пишешь под них код?
Безотносительно к возможности организовать общую процедуру, думаю что "написать одну sub или function, и по нажатию любой кнопки ее вызывать" - такой подход делает код более ясным и, следовательно, более управляемым.

Re: Множество CommandButon одна процедура обработки

Если я не ошибаюсь, возможно создавать программно контролы на форме, и можно программно же создавать для них код обработки событий (ну или вообще любой код). У меня стояла такая задача: база данных во многих txt файлах, загружается при начале работы формы. Каждый файл с разделителем в виде определенного символа содержит данные по типу изделий, ну и при выборе этого типа изделий в комбобоксы формы загружается информация из файла, т.е.,- заголовок стобца из файла = frame.caption (на котором расположен комбобокс), а все варианты значений из столбца подгружаются в combobox (...additem). Ну и при выборе того или иного значения в комбобоксах должна запускаться процедура сортировки, выводящая в листбокс все марки, удовлетворяющие всем значениям комбобоксов. Поскольку столбцов (полей) количество разное в разных файлах, то я пытался создавать контролы программно (в конечном счете плюнул и создал максимально возможное кол-во, а ненужные убирал за счет .vizible=false).  Код обработки события для них - тоже программно (используя Application.VBE.CodePanes. ..чего-то там еще.. .InsertLines ...). На самом деле, иногда получалось (т.е. появлялись строки кода в нужном модуле, и вроде такие, "как надо", но все было глючно, неуправляемо и зачастую кончалась fatal error).