Есть более простой способ сделать это ...
1) В пользовательской форме создайте новый CommandButton, который будет выполнять макрос, который вы хотите запустить.
2) Установите высоту и ширину кнопки на 0
3) Убедитесь, что параметр «TabIndex» для кнопки равен 0 ... Это создаст «невидимую» CommandButton, которая получит фокус, как только форма откроется.
4) В процедуре вызова непосредственно перед командой, которая «показывает», пользовательская форма вводит строку - «Application.SendKeys» ~ »'
Как это работает ...
Командная кнопка, созданная в (1), является действительным элементом управления, как и любой другой, за исключением того, что вы не можете его увидеть или щелкнуть по нему кнопкой мыши. Команда «SendKeys» воспроизводит щелчок левой кнопкой мыши, который сохраняется в буфере клавиатуры до тех пор, пока форма не отобразится, когда она будет прочитана. Это имеет тот же эффект, что и щелчок мышью, и запускает необходимый макрос.
Кстати, если вы вызываете макрос из более чем одного места и хотите, чтобы различные действия зависели от источника вызова, вы можете добавить более одной «невидимой» кнопки и добавить «{Tab}» перед « ~ "символ для перемещения фокуса через доступные элементы управления. например 'Application.SendKeys "{Tab} ~"' активирует кнопку с параметром 'TabIndex', установленным в 1. 'Application.SendKeys "{Tab} {Tab} {Tab} {Tab} ~"' активирует кнопку с параметр TabIndex установлен на 4 и т. д.
РФ