Как добавить процедуру к кнопке используя код VBA
Модератор: Naeel Maqsudov
Я создал кнопку в MS EXCEL и у меня есть текст макроса который должен выполняться при нажатии кнопки, как мне программно "прицепить" код на событие CLICK.
Я не понял выражение " программно "прицепить""
. Если просто приципить: просто кликнуть два раза по кнопке - и вставляй код. Перед этим проверить Сервис-Макрос->Безопасность установлено на "средняя" или "низкая"

Я написал макрос который создает на листе MS EXCEL кнопку (FORMS.CommandButton).
Теперь я хочу кодом записать макрос, который будет исполняться по нажатию этой кнопки. Не прицепить макрос, а создать макрос с помощью кода VBA.
Теперь я хочу кодом записать макрос, который будет исполняться по нажатию этой кнопки. Не прицепить макрос, а создать макрос с помощью кода VBA.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Многие хотят, но не многие могут
(На написание с нуля и отладку ушло около 15 минут)
Пусть:
1) модуль книги в проекте называется "ЭтаКнига"
2) на листе Лист1 есть кнопка CommandButton1
Вот макрос который добавит на нее действие MsgBox "qwerty"
PS
Спасибо за вопрос. Никогда раньше этого не делал.
Теперь, Дима, Вы не сможете испытать радость познания нового
Хотя...
Нберите в макросе "ЭтаКнига.VBProject.ActiveVBProject.VBComponents("Лист1").CodeModule", затем поставьте точку, и узнаете все остальное

Пусть:
1) модуль книги в проекте называется "ЭтаКнига"
2) на листе Лист1 есть кнопка CommandButton1
Вот макрос который добавит на нее действие MsgBox "qwerty"
Код: Выделить всё
Sub qwe()
Dim m As Object
Set m = ЭтаКнига.VBProject.ActiveVBProject.VBComponents("Лист1")
With m.CodeModule
'Private Sub CommandButton1_Click()
' MsgBox "qwerty"
'End Sub
.InsertLines .CountOfDeclarationLines + 1, "" _
& Chr(13) & "Private Sub CommandButton1_Click()" _
& Chr(13) & " MsgBox ""qwerty""" _
& Chr(13) & "End Sub" _
& Chr(13) & ""
End With
End Sub
PS
Спасибо за вопрос. Никогда раньше этого не делал.
Теперь, Дима, Вы не сможете испытать радость познания нового

Хотя...
Нберите в макросе "ЭтаКнига.VBProject.ActiveVBProject.VBComponents("Лист1").CodeModule", затем поставьте точку, и узнаете все остальное

Большое спасибо куратору за помощь.
Дальше все сделаю сам.
GOOD WORKING!!!
Дальше все сделаю сам.
GOOD WORKING!!!