Страницы: 1
RSS
vba: как из одной формы "нажать" кнопку другой формы
 
Добрый день! На R1.CommandButton_Click одной формы навешано много операций. Хочется, чтобы все эти операции могли запускаться из другой формы по нажатию на контрол.  
Можно ли сделать обращения к процедурам события R1.CommandButton_Click как к макросу?  
Или придется выносить процедуры отдельным макросом и обращаться к нему сколько влезет?  
 
Не ругайтесь, если пишу чушь - этот вопрос родился по аналогии с возможностью вызова как макрос процедуры инициализации (правда, в рамках одной формы).
 
Трудно понять зачем, если извесны все имена процедур. Через Call вызывайте любую. В чем выгода?..
 
{quote}{login=VovaK}{date=13.09.2011 01:20}{thema=}{post}Трудно понять зачем, если извесны все имена процедур. Через Call вызывайте любую. В чем выгода?..{/post}{/quote}  
Эээмм.. я не верно выразилась и под процедурами имела в виду множество команд: всякие приравнивания, если-то, for и пр.
 
{quote}{login=Black__Hole}{date=13.09.2011 01:24}{thema=Re: }{post}{quote}{login=VovaK}{date=13.09.2011 01:20}{thema=}{post}Трудно понять зачем, если извесны все имена процедур. Через Call вызывайте любую. В чем выгода?..{/post}{/quote} имела в виду множество команд: всякие приравнивания, если-то, for и пр.{/post}{/quote}Ну так все эти "приравнивания и пр." находятся в какой-то процедуре? Вот её и вызывайте.
 
{quote}{login=Юрий М}{date=13.09.2011 01:49}{thema=Re: Re: }{post}{quote}{login=Black__Hole}{date=13.09.2011 01:24}{thema=Re: }{post}{quote}{login=VovaK}{date=13.09.2011 01:20}{thema=}{post}Трудно понять зачем, если извесны все имена процедур. Через Call вызывайте любую. В чем выгода?..{/post}{/quote} имела в виду множество команд: всякие приравнивания, если-то, for и пр.{/post}{/quote}Ну так все эти "приравнивания и пр." находятся в какой-то процедуре? Вот её и вызывайте.{/post}{/quote}  
Не знаю, можно ли считать событие R1.CommandButton_Click процедурой.. Но при вставке в другую форму Call R1.CommandButton_Click возникает ошибка "Method or data member not found". Вот поэтому и возник вопрос - как обратиться к собитию в другой форме (или, как я назвала это в теме, "нажать" кнопку одной формы из другой формы.
 
Всё, что у Вас выполняется в процедуре R1.CommandButton_Click оформите отдельной процедурой, поместив её в общий модуль, которую сможете вызывать любой кнопкой из любой формы.
 
Создайте процедуру к примеру test() с "приравниваниями". На событие R1.CommandButton_Click  вставьте одну строку Call test и будет вам праздник.
 
Выходит, что мое предположение в начале поста ("Или придется выносить процедуры отдельным макросом и обращаться к нему сколько влезет?") является правильным. Жаль. И всем спасибо за помощь!
 
{quote}{login=Black__Hole}{date=13.09.2011 03:38}{thema=}{post}Выходит, что мое предположение в начале поста ("Или придется выносить процедуры отдельным макросом и обращаться к нему сколько влезет?") является правильным. Жаль. И всем спасибо за помощь!{/post}{/quote}Жаль, что Вы правильно понимаете? :-) Если вариант с отдельной процедурой не устраивает - продублируйте всё, что "внутри" первой кнопки во вторую. Так лучше?
 
{quote}{login=Юрий М}{date=13.09.2011 03:43}{thema=Re: }{post}{quote}{login=Black__Hole}{date=13.09.2011 03:38}{thema=}{post}Выходит, что мое предположение в начале поста ("Или придется выносить процедуры отдельным макросом и обращаться к нему сколько влезет?") является правильным. Жаль. И всем спасибо за помощь!{/post}{/quote}Жаль, что Вы правильно понимаете? :-) Если вариант с отдельной процедурой не устраивает - продублируйте всё, что "внутри" первой кнопки во вторую. Так лучше?{/post}{/quote}  
Юрий М, жаль, что предположение верно.
 
Процедура R1.CommandButton_Click не объявлена ли как Private?  
Если да, то, конечно, ее нельзя вызвать из другого модуля.  
Объявите как Public.  
 
Не проверял.
 
{quote}{login=Казанский}{date=13.09.2011 06:24}{thema=}{post}Процедура R1.CommandButton_Click не объявлена ли как Private?  
Если да, то, конечно, ее нельзя вызвать из другого модуля.  
Объявите как Public.  
 
Не проверял.{/post}{/quote}  
 
Похоже, это было то, что нужно! :) Но я уже все переделала в отдельные модули :(
 
>>Процедура R1.CommandButton_Click не объявлена ли как Private?  
>>Если да, то, конечно, ее нельзя вызвать из другого модуля.  
 
Как ни странно, с Application.Run возможно все. Вот только стоит ли идти в этом направлении? Думаю, нет.  
 
Пример. Вызова с помощью Application.Run  
 
Макрос на Листе1  
Private Sub CommandButton1_Click()  
MsgBox 1  
End Sub  
 
Макрос в модуле1  
Sub io()  
Application.Run ("Лист1.CommandButton1_Click")  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Кнопки на форме.
 
Приношу свои извинения, не доглядел!
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
Страницы: 1
Читают тему
Наверх