Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2009, 19:57   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Можно ли создать событие для формы VBA?

Можно ли создать событие «Закрытие формы» в VBA Excel 2007, и какой код этого события.
segail вне форума Ответить с цитированием
Старый 17.06.2009, 20:00   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Такое событие уже создано:

Код:
Private Sub UserForm_Terminate()
    MsgBox "Форма закрывается..."
End Sub
Есть ещё кое-что:
Код:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then MsgBox "Форму закрыли крестиком"
    If CloseMode = 1 Then MsgBox "Форму закрыли программно - через Unload"

    ' Cancel=true ' отменяем закрытие
End Sub

Последний раз редактировалось EducatedFool; 17.06.2009 в 20:03.
EducatedFool вне форума Ответить с цитированием
Старый 17.06.2009, 20:24   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Не много не понял. Форма закрывается крестом по любому, а вы прописали действие или нет?

Например; Событие «Закрытие формы крестом» При создание события возникает действие «Закрытие таблицы Excel Книга1» Как это будет выглядеть в коде?
segail вне форума Ответить с цитированием
Старый 17.06.2009, 20:45   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Например, так:
Код:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Workbooks("Книга1.xls").Close
End Sub
Или так:
Код:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    ThisWorkbook.Close False    ' закрывает текущий файл без сохранения изменений
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 17.06.2009, 20:51   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Понятно
Вы дали ссылку на сайт. Другие способы связи с вами нет?
segail вне форума Ответить с цитированием
Старый 17.06.2009, 21:21   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Другие способы связи с вами нет?
Со мной лучше вообще не связываться

Ну, если вам недостаточно аськи, скайпа и электронной почты, то, пожалуй, нет. Номер сотового я точно не дам

Впрочем, есть ещё личные сообщения на форуме...
EducatedFool вне форума Ответить с цитированием
Старый 17.06.2009, 21:31   #7
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Таблица по этому коду не закрывает, ошибки тоже нет???

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Workbooks("Книга1.xls").Close
End Sub
___________________________________ ____________________________
электронную почту не нашел
segail вне форума Ответить с цитированием
Старый 17.06.2009, 21:36   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Таблица по этому коду не закрывает, ошибки тоже нет???
Значит этот код вообще не запускается.
Его надо было вставить в модуль формы.

Будет пример файла - будет более подробный ответ.
EducatedFool вне форума Ответить с цитированием
Старый 17.06.2009, 22:13   #9
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

При событие (крест) (Alt+F4) происходит: зашита листа, таблица сохраняется (путь сохранения не надо) и закрывается все полностью.
При клике по кнопке "Выход" тоже самое.
Вложения
Тип файла: rar V_ГСМ.rar (14.5 Кб, 30 просмотров)

Последний раз редактировалось segail; 17.06.2009 в 22:18.
segail вне форума Ответить с цитированием
Старый 17.06.2009, 22:33   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот весь код:

Код:
Private Sub CommandButton4_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    ActiveSheet.Unprotect
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    ActiveSheet.Protect
    ThisWorkbook.Close True
End Sub
Пример во вложении:
Вложения
Тип файла: rar segail.rar (8.9 Кб, 74 просмотров)
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли отлавливать событие потери фокуса Control'ом tolikman Microsoft Office Excel 2 09.01.2009 15:02
Можно ли обратиться к объекту, запустившему событие? ekesar Microsoft Office Excel 7 14.12.2008 21:17
можно ли создать стевой режим для игры 18 стальных колёс ТРИУМФ Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.05.2008 12:02
приложение без формы, событие при завершении ERASERROR Общие вопросы Delphi 10 22.02.2008 14:10
Событие OnShow формы Antoha Общие вопросы Delphi 4 12.02.2008 21:13