Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.09.2008, 19:08   #1
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию Форма-Добавить объект-Назначить слушатель события

Здраствуйте, у меня назрел вопрос. Мне необходимо во время работы формы, добавить в нее некоторое кол-во эл-ов управления, и назначить им слушатели события xxxxx_Click(), причем в событии должна быть функция в которую надо будет передать, например, порядковый номер добавленного элемента. Можно ли назначить такое событие элементу во время работы кода. В родном англ. Helpe, не нашол...

Последний раз редактировалось tolikman; 09.09.2008 в 19:17.
tolikman вне форума
Старый 09.09.2008, 21:26   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Если объекты (добавляемые) Вам заранее известны и определены, создайте их на форме сразу , назначьте им соответствующие события и при активации формы скройте Visible = False .
Затем, во время работы формы их можно будет просто отобразить Visible = True по какому-либо событию.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 09.09.2008, 23:48   #3
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию

VictorM, спасибо.
Но их может быть неизвестное кол-во, но не больше 30(и то не факт). подгатовка стольки конечно реальна, но хотелось бы поаккуратнее.
tolikman вне форума
Старый 10.09.2008, 07:06   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот, нашел в книге Профессиональное программирование на VBA в Excel 2002 (автор John Walkenbach)

Если немного переделать, то будет то, что надо.


Листинг 28.5.
Генерация диалогового окна UserForm, содержащего 100 кнопок

Код:
Sub AddlOOButtons()
Dim UFvbc As Object 'VBComponent
Dim CMod As Object 'Модуль кода
Dim ctl As Control
Dim cb As CommandButton
Dim n As Integer, с As Integer, r As Integer
Dim code As String
Set UFvbc = ThisWorkbook.VBProject.VBComponents("UserForml")
'Удаление всех элементов управления
For Each ctl In UFvbc.Designer.Controls
UFvbc.Designer.Controls.Remove ctl.Name
Next ctl
'Удаление всего кода VBA
UFvbc.CodeModule.DeleteLines 1, UFvbc.CodeModule.CountOfLines
' Добавление 100 элементов управления CommandButton
n = 1
For r = 1 To 10
For с = 1 To 10
Set cb = UFvbc.Designer.Controls.Add("Forms.CommandButton.1")
With cb
.Width = 22
.Height =2 2
.Left = {c * 26) - 16
.Top = {r * 26) - 16
.Caption = л
End With
'Добавление кола процедуры обработки события
With UFvbc.CodeModule
code = ""
code = code & "Privat e Sub CommandButton" & n & "_Click" & vbCr
code = code & "Msgbox ""Thi s is CommandButton" & n &"""" & vbcr
code = code & "End Sub"
.InsertLine s .CountOfLines + 1, code
End With
n = n + 1
Next с
Next r
' VBA.UserForms.Add("UserFonnl").Show
End Sub
EducatedFool вне форума
Старый 10.09.2008, 08:44   #5
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
Радость

EducatedFool, ОГРОМНОЕ спасибо!!! разберемся
tolikman вне форума
Старый 10.09.2008, 10:41   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот ещё один из вариантов:
http://forum.developing.ru/showthread.php?t=2681

А набрав в поисковике строку forms.commandbutton.1, сможете обнаружить и другие способы достичь желаемого.

Последний раз редактировалось EducatedFool; 10.09.2008 в 10:45.
EducatedFool вне форума
Старый 10.09.2008, 16:18   #7
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию

большое всем спасибо!!!
tolikman вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как клавиши F, назначить макрос? valerij Microsoft Office Excel 7 06.06.2008 10:08
Как в Excele2007 назначить макрос на пункт пользовательского меню Suroejka Microsoft Office Excel 3 28.05.2008 14:02
Назначить макрос Nando Microsoft Office Excel 5 07.01.2008 14:33
Как программно назначить привилегию или писать в реестр через WinApi ? UnD)eaD)Snake Win Api 16 27.09.2007 20:20