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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.12.2008, 12:12   #1
ekesar
 
Регистрация: 27.11.2008
Сообщений: 8
По умолчанию Как привязать событие или макрос к динамическому объекту (commandbutton) в форме?

При открытии формы копирую commandbutton, события этого commandbutton не копируются.
Можно ли как-то привязать к новой кнопке событие или макрос?
Спасибо.
ekesar вне форума
Старый 08.12.2008, 12:21   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в режиме конструктора формы щелкаем правой кнопкой мыши по кнопке формы, выбираем "посмотреть код", попадаем в процедуру типа:
Private Sub CommandButtonХХ_Click()
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 08.12.2008, 12:46   #3
ekesar
 
Регистрация: 27.11.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
в режиме конструктора формы щелкаем правой кнопкой мыши по кнопке формы, выбираем "посмотреть код", попадаем в процедуру типа:
Private Sub CommandButtonХХ_Click()
End Sub
а если CommandButton создается не в режиме конструктора, а в процессе работы формы (например при activate формы)?
ekesar вне форума
Старый 08.12.2008, 13:53   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

как ответить на ваш вопрос - не знаю. посоветую как я выходил из такой ситуации.
1.форма со всеми элементами упуравления набиралась в ручном режиме
2.а перед активацией формы я запрещал (разрешал) использование некоторых элементов формы, устанавливая их свойство Enabled.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 08.12.2008, 13:59   #5
ekesar
 
Регистрация: 27.11.2008
Сообщений: 8
По умолчанию

Я пришел к тому же самому.

Но хотелось поизящнее сделать.
ekesar вне форума
Старый 08.12.2008, 15:50   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Можно ли как-то привязать к новой кнопке событие или макрос?
Примерно так:
(цитата из книги Уокенбаха "Профессиональное программирование в Excel").

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

Пример данного раздела демонстрирует преимущества использования объекта D e s i g n e r
при создании диалоговых окон UserForm. В этом случае код добавляет 100 элементов управ-
ления CommandButton (которые соответствующим образом расположены и выровнены), уста-
наачивает значение свойства C a p t i o n для каждого элемента управления CammandButto:] и
создает 100 процедур обработки событий (для каждого элемента управления CommandButton).


Код:
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 =22
.Left = {c * 26) - 16
.Top = {r * 26) - 16
.Caption = л
End With
' Добавление кола процедуры обработки события
With UFvbc.CodeModule
code = ""
code = code & "Private Sub CommandButton" & n & "_Click" & vbCr
code = code & "Msgbox ""This is CommandButton" & n & " " " " & vbcr
code = code & "End Sub"
. I n s e r t L i n e s .CountOfLines + 1, code
End With
n = n + 1
Next с
Next r
' VBA.UserForms.Add("UserFonnl").Show
End Sub
Процедура AddlOOButtons требует наличия диалогового окна, которое называется UserFonnl. Процедура начинает работу с удаления всех элементов управления на этом диало-
говом окне. Затем удаляется весь код в модуле кода данного диалогового окна. Для этого ис-
пользуется метод DeleteLin.es объекта CodeModule. Далее добавляются элементы управле-
ния CoinmandButton и процедуры обработки события для этих элементов управления с помо-
щью двух циклов For-Next. Процедуры обработки событий очень просты. Ниже приведен
пример одной из них (процедура задана для элемента управления CommandButtonl).

Код:
P r i v a t e Sub CommandButtonl_Click()
MsgBox "Это CommandButtonl"
End Sub
Не пытайтесь вставить этот код в VBA - там очень много опечаток (русские буквы перемешаны с латиницей).

Если надо саму книгу - пишите в личку, скину по почте. (весит около 10 Мб)
EducatedFool вне форума
Старый 08.12.2008, 20:15   #7
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Удачная книжка. У меня она только в бумаге.
Я по ней учился макросы писать. (постоянно с собой)
Хотя в ней процентов 10-20 от всех возможностей описано, но заходит легко. (а может есть лучше?)
Можно мне её на kammm@mail.ru закинуть?
КаМММ вне форума
Старый 09.12.2008, 09:13   #8
ekesar
 
Регистрация: 27.11.2008
Сообщений: 8
По умолчанию

Скиньте на kes2 _собака_ mail.ru пожалуйста. Спасибо.
ekesar вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать ScrollBar к TabSheet в PageControl fen Компоненты Delphi 11 10.04.2012 19:39
Как обратиться к объекту который был только что создан Arassir Помощь студентам 5 24.10.2008 20:42
Как привязать макрос к дате? АLексаNдр Microsoft Office Excel 3 12.08.2008 14:34
Как объекту рисования (овал) присвоить значение? Град Microsoft Office Excel 8 17.07.2008 10:42
Как привязать рисунок к записи в БД? DIBAZOL БД в Delphi 12 17.07.2008 10:29