powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как закрыть sub из формы на vba
14 сообщений из 14, страница 1 из 1
как закрыть sub из формы на vba
    #35857108
Kirillka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в середине Sub'a вызывается форма, после манипуляций с ней Sub продолжает работу с полученными данными.
Как закрыть sub из формы если пользователь нажмет на крестик (правый верхний угол) в форме?
Спасибо.
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35857267
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через глобальную переменную или свойство формы.
Проверьте их значение после закрытие формы и выходите из sub.
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35857338
Kirillka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могли бы Вы показать это на примере?
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35857365
sadem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kirillka, вы на чем пишите? Если смотреть на данный вопрос со стороны VB6, то не совсем понятно получается... процедура будет все-равно вполняться до конца даже при вызове другой формы (если конечно речь не идет о MsgBox, InputBox и т.п.), например такая (F2 - это форма):
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Комманда1_Click()
    Load F2
    F2.Visible = True
    MsgBox "All Ok!!!"
End Sub

Приведите хотя бы часть своего кода....
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35857388
Kirillka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sademKirillka, вы на чем пишите?
Дорогой sadem я пишу на иврите.

как закрыть sub из формы на vba
В Visual Basic for Applications в отличие от Visual Basic (модальные, не модальные) есть только один вид форм.
MsgBox, InputBox это диалоговые окна а не формы.
Форма это объект UserForm.
В Visual Basic for Applications когда Sub вызывает форму его выполнение прекращается до того момента пока форма не будет выгружена или скрыта.
Так вот если пользователь увидев форму пришел к выводу что дальнейшее выполнение программы для него не целесообразно, он захочет ее закрыть (крестик в правом верхнем углу), естественно после этого ни мне ни пользователю дальнейшее выполнение кода ненужно, по этому Sub надо закрыть.
Вопрос: Как закрыть sub из формы, на Visual Basic for Applications

Код: plaintext
1.
2.
3.
4.
5.
Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

здесь должно быть- мой Sub который вызвал форму закройся (только на языке Visual Basic for Applications)

End Sub
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35857493
sadem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kirillka, ну просчет мой, не заметил, но на vba она все равно будет выполнение процедуры до конца...
Давайте проверим (VBA 6.5.1020):
Код: plaintext
1.
2.
3.
4.
Private Sub Form_Unload(Cancel As Integer)
    DoCmd.OpenForm "F2"
    MsgBox "All Ok!!!"
End Sub

Ну ладно, а вообще если на то пошло, сделайте маркер, типа Boolean, который например будет принимать значение true только в том случае, если посльзователь вышел из второй формы не через "крестик" (как я полагаю, есть и второй способ выхода из формы, что-то типа кнопки "выход" или "ок", вот там и ставьте изменение этой метки), а далее в процедуре сразу после запуска формы условие - if Not(маркер) Then Exit Sub.
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35859146
Krasnaja Shapka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я использую просто "end"

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then End
End Sub
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35859363
Kirillka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа Вы не понимаете чего мне надо.
Мне надо чтобы из этого Sub'a
Код: plaintext
1.
2.
3.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

End Sub
можно было закрыть любой другой.

Код: plaintext
1.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
здесь я полагаю должно быть "имя любого Sub'a exit или end
Код: plaintext
1.
End Sub

Задача в том чтобы передать любому Sub'у команду (параметр) на закрытие.
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35859668
Пример
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В модуле пишем так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Option Explicit
Public a As Boolean
Sub Zapusk()
    a = False
    UserForm1.Show
    If a Then Exit Sub
    MsgBox  123 
End Sub

В коде формы так
Код: plaintext
1.
2.
3.
4.
Option Explicit
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    a = True
End Sub
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35866002
sadem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дорогой Kirillka, похоже Вы действительно пишите на "иврите". Что-то как-то непонятно задачу ставите. Выполнение двух процедур одновременно происходит очень редко и в определенных случаях - при рекурсии или например, в элементе таймер (которого в vba вроде нет, хотя точно не помню). Но по вашему описанию трудно догадаться в каком месте и что находится в коде. Приведите наконец-то часть своего кода (то, что вы пишите кодом трудно назвать, это лишь попытка что-то объяснить форумчанам). Тогда может всё-таки Вам кто-то поможет, а иначе "гадать" вряд ли стоит над вашим вопросом....
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35866257
Arvitaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KirillkaГоспода Вы не понимаете чего мне надо.
Мне надо чтобы из этого Sub'a
Код: plaintext
1.
2.
3.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

End Sub
можно было закрыть любой другой.

Код: plaintext
1.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
здесь я полагаю должно быть "имя любого Sub'a exit или end
Код: plaintext
1.
End Sub

Задача в том чтобы передать любому Sub'у команду (параметр) на закрытие.

Собственно говоря, это невозможно. Вот и весь ответ. А способы окончания работы или обыкновенной проверки на продолжение выполнения процедуры - это взависимости, от того что Вы хотите чтобы выполнялось дальше.

Я бы немного дополнил следующим в случае продолжения выполнения программы

авторOption Explicit
Public a As Boolean
Sub Zapusk()
a = False
UserForm1.Show
If a Then call Любая_Другая_Функця(параметры):Exit Sub
MsgBox 123
End Sub
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35867182
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это делается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
'В форме:
Public Function ShowForm() as Boolean
    Show vbModal
    If что-то там Then ShowForm = True
End sub

'В любой процедуре

If UserForm1.ShowForm Then Exit Sub
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35869448
Kirillka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так:

В модуле
Код: plaintext
1.
Public CloseForm As Boolean
В Sub'e
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub ...()
'код
CloseForm = False
'код
Form.Show
'закрытие Sub'a после нажатия (х) в форме
If CloseForm = True Then Exit Sub
'код
End Sub
В форме
Код: plaintext
1.
2.
3.
Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
CloseForm = True
End Sub
Спасибо всем кто помог.
...
Рейтинг: 0 / 0
как закрыть sub из формы на vba
    #35872049
Krasnaja Shapka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
повторюсь, если вам необходимо остановить работу макроса (а не просто выйти из некоей процедуры и продолжить работать). то достаточно написать:
Код: plaintext
1.
2.
Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
End
End Sub
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как закрыть sub из формы на vba
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]