Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/88: Рейтинг темы: голосов - 88, средняя оценка - 4.77
32 / 29 / 1
Регистрация: 06.01.2017
Сообщений: 297
1

Закрытие формы

09.11.2017, 02:27. Показов 18382. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаём форму.
Закрыть её можно, просто кликнув по крестику в правом верхнем углу.
Но правила хорошего тона требуют предусмотреть кнопку закрытия, при этом надо прицепить к кнопке Обработчик Клика.
Что-то вроде:

Visual Basic
1
2
3
Private Sub cmb_Exit_Click()
 Me.Hide
End Sub
Но форма может закрываться и в других случаях, например в случае загрузки/сохранения некоего "Начального Документа" в случае отказа от операции

Что-то такое:

Visual Basic
1
2
3
4
5
6
7
Private Sub cmb_СreateCombine_Click()
 wbCombName = LoadFileSRC
 If wbCombName = "False" Then
  Me.Hide
 Else
 End If
End Sub
Вопрос, как закрыть форму не выписывая закрытие в явной форме, а через посылку сообщения в Обработчик кнопки Закрытия?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2017, 02:27
Ответы с готовыми решениями:

Закрытие формы
Здравствуйте! Как при нажатии на крестик в форме вывести msgbox?

Запрет на закрытие формы
Можно ли сделать так, чтобы при запуске формы vba xl юзер не мог ее закрыть нажатием кнопки...

Закрытие формы по таймеру
Кто подскажет код после открытия формы Sub Кнопка1_Щелкнуть() UserForm1.Show End Subзадать...

Закрытие активной формы
И еще один вопросик небольшой ))) Скажите, пожалуйста, какой функцией VBA закрывается формочка ?...

8
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
09.11.2017, 06:59 2
вместо Me.Hide вызвать cmb_Exit_Click

Добавлено через 2 минуты
Но правила хорошего тона требуют предусмотреть кнопку закрытия

Не по теме:

жесткие требования у ваших правил! лучше кучу граблей навалить чем воспользоваться стандартным предусмотренным средством

0
32 / 29 / 1
Регистрация: 06.01.2017
Сообщений: 297
09.11.2017, 11:12  [ТС] 3
Ну это не то, очевидно же.

Какая мне разница, вызывать ту или иную функцию.

Более того, Hide даже предпочтительнее в каком-то смысле.

Нет, здесь надо именно что послать какое-о сообщение, Event....
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
09.11.2017, 17:21 4
MU-GK, ну и обратиться из разных, где вам нужно к этому макросу закрытия Call cmb_Exit_Click

Добавлено через 16 минут
MU-GK, только нужно указать ИмяФормы.ИмяСаб, если закрывать не под флагом этой формы
0
32 / 29 / 1
Регистрация: 06.01.2017
Сообщений: 297
09.11.2017, 17:31  [ТС] 5
Ну Вы даёте!
Для это и обращаться не надо, достаточно прописать нужную функцию закрытия.

А вот если надо, сидя в одной форме, закрыть другую форму?
А если эта другая форма в другой Книге?
А если вообще в другой Application, одна, скажем, в Excel, а другая в PowerPoint?
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
09.11.2017, 18:27 6
Цитата Сообщение от MU-GK Посмотреть сообщение
А вот если надо, сидя в одной форме, закрыть другую форму?
Я вам про это и писал
Цитата Сообщение от MU-GK Посмотреть сообщение
А если эта другая форма в другой Книге?
если мне не изменяет память, то и это возможно, но уже с указанием книги, в которой нужно закрыть форму
Про другую аплик ничего не могу сказать
0
32 / 29 / 1
Регистрация: 06.01.2017
Сообщений: 297
09.11.2017, 19:16  [ТС] 7
А всего-то надо послать сообщение.

Но как?!
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
09.11.2017, 19:43 8
Если речь идёт о другом приложении, к которому мы не имеем доступа, то :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Const WM_CLOSE = &H10
 
Private Declare Function FindWindow _
        Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
Private Declare Function SendMessage _
        Lib "user32" Alias "SendMessageA" ( _
        ByVal hWnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        lParam As Any) As Long
 
Private Sub Test()
    h& = FindWindow(vbNullString, "UserForm1")
    SendMessage h&, WM_CLOSE, 0&, 0&
End Sub
И если Вы правильно укажите заголовок окна, то будет вызвано событие UserForm_QueryClose чужой формы.
0
32 / 29 / 1
Регистрация: 06.01.2017
Сообщений: 297
10.11.2017, 00:45  [ТС] 9
Мда ..
Сложно как-то ...
0
10.11.2017, 00:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2017, 00:45
Помогаю со студенческими работами здесь

Подскажите с паролем на закрытие формы...
Добрый день... Стоит задача, чтобы при закрытии формы требовалось подтверждение, а при согласии...

Закрытие формы при открытии другой
Я не знаю VBA, но нашла здесь на форуме, как с его помощью поставить пароль на кнопки на форме. и...

Как запретить закрытие пользовательской формы
Приветствую всех знатоков! у меня 2 вопроса: 1 - каким образом сделать UserForm1...

VBA Excel закрытие формы на листе
Не получается закрыть форму при нажатии ESC!! Помогите!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru