Как добавить процедуру к кнопке используя код VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Дима
Сообщения: 3
Зарегистрирован: 21 авг 2004, 15:19

Я создал кнопку в MS EXCEL и у меня есть текст макроса который должен выполняться при нажатии кнопки, как мне программно "прицепить" код на событие CLICK.
Dmitrij
Сообщения: 2
Зарегистрирован: 21 авг 2004, 23:24
Контактная информация:

Я не понял выражение " программно "прицепить"" :( . Если просто приципить: просто кликнуть два раза по кнопке - и вставляй код. Перед этим проверить Сервис-Макрос->Безопасность установлено на "средняя" или "низкая"
Дима
Сообщения: 3
Зарегистрирован: 21 авг 2004, 15:19

Я написал макрос который создает на листе MS EXCEL кнопку (FORMS.CommandButton).
Теперь я хочу кодом записать макрос, который будет исполняться по нажатию этой кнопки. Не прицепить макрос, а создать макрос с помощью кода VBA.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Многие хотят, но не многие могут ;) (На написание с нуля и отладку ушло около 15 минут)

Пусть:
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", затем поставьте точку, и узнаете все остальное :)
Дима
Сообщения: 3
Зарегистрирован: 21 авг 2004, 15:19

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