Консультация № 122899
13.02.2008, 01:26
0.00 руб.
0 1 1
Доброго времени суток!
VBA Exel. Две рабочие книги при открытии запускают форму Userform1 и Userform2. Открываем первую книгу. При наступлении определенного события в Userform1(например нажатие кнопки) необходимо, чтобы управление было передано второй рабочей книге (а именно должно сработать событие WorkbookOpen второй книги). Если это возможно, подскажите пожалуйста, как это сделать.

Обсуждение

давно
Специалист
399094
201
16.02.2008, 21:51
общий
это ответ
Здравствуйте, Фоменко Сергей Владимирович!
Это возможно.
1) Откройте рабочую книгу номер два, в которой UserForm2
2) Откройте редактор VBA
3) В главном меню выберите Insert-Module, должен добавиться новый модуль Module 1
3) В него скопируйте такой вот код
<code>
Public Sub Auto_Open()
UserForm2.Show
End Sub
</code>
4) <b>Удалите обработчик события WorkbookOpen Обязательно!
убрав из него строку UserForm2.Show Он больше не понадобится!</b>
5) Откройте рабочую книгу номер один, в которой UserForm1,
положите на нее кнопку CommandButton1 и в обработчик события CommandButton1_Click скопируйте код
<code>
Private Sub CommandButton1_Click()
Application.Workbooks(2).RunAutoMacros xlAutoOpen
End Sub
</code>
Рабочая книга номер два должна быть открыта, если нет, то нужно её сначала
открыть, можно кодом с помощью Open. Вместо индексов Workbooks(2)
или Workbooks(1) можно использовать имена рабочих книг
Например, Workbooks("2.xlsm").RunAutoMacros xlAutoOpen
<b>Но обе рабочие книги должны находиться в одной папке, в противном случае
нужно прописывать полный путь.
Удачи!!!</b>
Форма ответа