Закрытие Excel через UserForm
Starbirst
Дата: Среда, 10.01.2018, 10:54 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
Добрый день! Ребята, помогите, пожалуйста, доработать макрос. При закрытии книги срабатывает UserForm. При сохранении книги программа не закрывается, остается пустое окно. Как выйти из Excel?
Добрый день! Ребята, помогите, пожалуйста, доработать макрос. При закрытии книги срабатывает UserForm. При сохранении книги программа не закрывается, остается пустое окно. Как выйти из Excel? Starbirst
Сообщение отредактировал Starbirst - Среда, 10.01.2018, 10:55
Ответить
Сообщение Добрый день! Ребята, помогите, пожалуйста, доработать макрос. При закрытии книги срабатывает UserForm. При сохранении книги программа не закрывается, остается пустое окно. Как выйти из Excel? Автор - Starbirst Дата добавления - 10.01.2018 в 10:54
sboy
Дата: Среда, 10.01.2018, 11:08 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Добрый день. [vba][/vba] sboy
Яндекс: 410016850021169
Ответить
Сообщение Добрый день. [vba][/vba] Автор - sboy Дата добавления - 10.01.2018 в 11:08
Starbirst
Дата: Среда, 10.01.2018, 12:35 |
Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
Пробовал добавить в книгу, не срабатывает...
Пробовал добавить в книгу, не срабатывает... Starbirst
Ответить
Сообщение Пробовал добавить в книгу, не срабатывает... Автор - Starbirst Дата добавления - 10.01.2018 в 12:35
sboy
Дата: Среда, 10.01.2018, 13:07 |
Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Хм, не совсем понял к чему там публичная переменная NoEvents чуть подправил код, чтоб показать как оно должно работать
Хм, не совсем понял к чему там публичная переменная NoEvents чуть подправил код, чтоб показать как оно должно работать sboy
Яндекс: 410016850021169
Ответить
Сообщение Хм, не совсем понял к чему там публичная переменная NoEvents чуть подправил код, чтоб показать как оно должно работать Автор - sboy Дата добавления - 10.01.2018 в 13:07
Starbirst
Дата: Среда, 10.01.2018, 14:21 |
Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
Спасибо! А программу как можно выгрузить?
Спасибо! А программу как можно выгрузить? Starbirst
Ответить
Сообщение Спасибо! А программу как можно выгрузить? Автор - Starbirst Дата добавления - 10.01.2018 в 14:21
sboy
Дата: Среда, 10.01.2018, 14:36 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Какую и куда?
Яндекс: 410016850021169
Ответить
Сообщение Какую и куда? Автор - sboy Дата добавления - 10.01.2018 в 14:36
Starbirst
Дата: Среда, 10.01.2018, 14:42 |
Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
При нажатии кнопок "ДА" или "НЕТ" программа не выгружается.
При нажатии кнопок "ДА" или "НЕТ" программа не выгружается. Starbirst
Ответить
Сообщение При нажатии кнопок "ДА" или "НЕТ" программа не выгружается. Автор - Starbirst Дата добавления - 10.01.2018 в 14:42
sboy
Дата: Среда, 10.01.2018, 14:49 |
Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Мне понятней не стало) программа - это excel? не выгружается куда? что в вашем понимании "выгружать"?
Мне понятней не стало) программа - это excel? не выгружается куда? что в вашем понимании "выгружать"? sboy
Яндекс: 410016850021169
Ответить
Сообщение Мне понятней не стало) программа - это excel? не выгружается куда? что в вашем понимании "выгружать"? Автор - sboy Дата добавления - 10.01.2018 в 14:49
Starbirst
Дата: Среда, 10.01.2018, 14:59 |
Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
В стандартном диалоговом окне нажатие кнопок "ДА" или "НЕТ" закрывает Excel полностью, а с UserForm почему-то такой трюк не работает
В стандартном диалоговом окне нажатие кнопок "ДА" или "НЕТ" закрывает Excel полностью, а с UserForm почему-то такой трюк не работает Starbirst
Ответить
Сообщение В стандартном диалоговом окне нажатие кнопок "ДА" или "НЕТ" закрывает Excel полностью, а с UserForm почему-то такой трюк не работает Автор - Starbirst Дата добавления - 10.01.2018 в 14:59
and_evg
Дата: Среда, 10.01.2018, 15:01 |
Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 470
Репутация:
82
±
Замечаний:
0% ±
Excel 2007
Starbirst , наверно хотите полностью эксель закрыть? тогда уберите совсем вот это: [vba]Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'If NoEvents Then Exit Sub 'Cancel = Not CanClose Выход.Show Cancel = Not CanClose End Sub
[/vba] упс нет. Вы кажется именно это и хотите обработать - событие закрытия файла... тогда не так. просто уберите строку: [vba][/vba]
Starbirst , наверно хотите полностью эксель закрыть? тогда уберите совсем вот это: [vba]Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'If NoEvents Then Exit Sub 'Cancel = Not CanClose Выход.Show Cancel = Not CanClose End Sub
[/vba] упс нет. Вы кажется именно это и хотите обработать - событие закрытия файла... тогда не так. просто уберите строку: [vba][/vba]and_evg
Сообщение отредактировал and_evg - Среда, 10.01.2018, 15:14
Ответить
Сообщение Starbirst , наверно хотите полностью эксель закрыть? тогда уберите совсем вот это: [vba]Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'If NoEvents Then Exit Sub 'Cancel = Not CanClose Выход.Show Cancel = Not CanClose End Sub
[/vba] упс нет. Вы кажется именно это и хотите обработать - событие закрытия файла... тогда не так. просто уберите строку: [vba][/vba]Автор - and_evg Дата добавления - 10.01.2018 в 15:01
Mikael
Дата: Среда, 10.01.2018, 17:11 |
Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация:
31
±
Замечаний:
0% ±
Excel 2010
Всем доброго времени! Я бы вообще все по-другому реализовал.
в модуль книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Выход.Show With ThisWorkbook Select Case Выход.iYesNoCancel Case 1 .Save Case 2 .Saved = 1 Case 3 Cancel = 1 End Select Unload Выход End With 'ThisWorkbook End Sub
[/vba]
Публичную переменную в модуль формы:
[vba]
Код
Public iYesNoCancel As Integer
[/vba]
и обработчики кнопок в модуль формы:
[vba]
Код
Private Sub ДА_Click() iYesNoCancel = 1 Me.Hide End Sub Private Sub НЕТ_Click() iYesNoCancel = 2 Me.Hide End Sub Private Sub ОТМЕНА_Click() iYesNoCancel = 3 Me.Hide End Sub
[/vba]
В таком варианте отпадает необходимость в глобальных переменных в модуле1. Попробуйте.
Всем доброго времени! Я бы вообще все по-другому реализовал.
в модуль книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Выход.Show With ThisWorkbook Select Case Выход.iYesNoCancel Case 1 .Save Case 2 .Saved = 1 Case 3 Cancel = 1 End Select Unload Выход End With 'ThisWorkbook End Sub
[/vba]
Публичную переменную в модуль формы:
[vba]
Код
Public iYesNoCancel As Integer
[/vba]
и обработчики кнопок в модуль формы:
[vba]
Код
Private Sub ДА_Click() iYesNoCancel = 1 Me.Hide End Sub Private Sub НЕТ_Click() iYesNoCancel = 2 Me.Hide End Sub Private Sub ОТМЕНА_Click() iYesNoCancel = 3 Me.Hide End Sub
[/vba]
В таком варианте отпадает необходимость в глобальных переменных в модуле1. Попробуйте. Mikael
Сообщение отредактировал Mikael - Среда, 10.01.2018, 17:52
Ответить
Сообщение Всем доброго времени! Я бы вообще все по-другому реализовал.
в модуль книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) Выход.Show With ThisWorkbook Select Case Выход.iYesNoCancel Case 1 .Save Case 2 .Saved = 1 Case 3 Cancel = 1 End Select Unload Выход End With 'ThisWorkbook End Sub
[/vba]
Публичную переменную в модуль формы:
[vba]
Код
Public iYesNoCancel As Integer
[/vba]
и обработчики кнопок в модуль формы:
[vba]
Код
Private Sub ДА_Click() iYesNoCancel = 1 Me.Hide End Sub Private Sub НЕТ_Click() iYesNoCancel = 2 Me.Hide End Sub Private Sub ОТМЕНА_Click() iYesNoCancel = 3 Me.Hide End Sub
[/vba]
В таком варианте отпадает необходимость в глобальных переменных в модуле1. Попробуйте. Автор - Mikael Дата добавления - 10.01.2018 в 17:11
Mikael
Дата: Среда, 10.01.2018, 17:43 |
Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация:
31
±
Замечаний:
0% ±
Excel 2010
Я бы вообще все по-другому реализовал.
Небольшое пояснение: в обработчик события _BeforeClose должен заключается код, который выполняется непосредственно перед выходом из книги. Пользователь уже нажал выйти и excel уже закрывает книгу, поэтому закрывать ее из формы еще раз нет никакого смысла, даже больше - такой код еще раз вызывает событие _BeforeClose, и Вам приходится придумывать "костыли" в виде глобальных переменных. Надеюсь смог помочь немного разобраться
Я бы вообще все по-другому реализовал.
Небольшое пояснение: в обработчик события _BeforeClose должен заключается код, который выполняется непосредственно перед выходом из книги. Пользователь уже нажал выйти и excel уже закрывает книгу, поэтому закрывать ее из формы еще раз нет никакого смысла, даже больше - такой код еще раз вызывает событие _BeforeClose, и Вам приходится придумывать "костыли" в виде глобальных переменных. Надеюсь смог помочь немного разобраться Mikael
Ответить
Сообщение Я бы вообще все по-другому реализовал.
Небольшое пояснение: в обработчик события _BeforeClose должен заключается код, который выполняется непосредственно перед выходом из книги. Пользователь уже нажал выйти и excel уже закрывает книгу, поэтому закрывать ее из формы еще раз нет никакого смысла, даже больше - такой код еще раз вызывает событие _BeforeClose, и Вам приходится придумывать "костыли" в виде глобальных переменных. Надеюсь смог помочь немного разобраться Автор - Mikael Дата добавления - 10.01.2018 в 17:43
Mikael
Дата: Среда, 10.01.2018, 19:08 |
Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация:
31
±
Замечаний:
0% ±
Excel 2010
Я тут немного подумал и укоротил код
в модуль книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) With Выход .Show If .bCancelClose Then Cancel = 1 End With Unload Выход End Sub
[/vba]
публичную переменную в модуль формы:
[vba]
Код
Public bCancelClose As Boolean
[/vba]
и обработчики:
[vba]
Код
Private Sub ДА_Click() ThisWorkbook.Save Me.Hide End Sub Private Sub НЕТ_Click() ThisWorkbook.Saved = 1 Me.Hide End Sub Private Sub ОТМЕНА_Click() bCancelClose = 1 Me.Hide End Sub
[/vba]
Хотя первый вариант мне тоже нравится - он наглядный и легко читаемый.
Я тут немного подумал и укоротил код
в модуль книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) With Выход .Show If .bCancelClose Then Cancel = 1 End With Unload Выход End Sub
[/vba]
публичную переменную в модуль формы:
[vba]
Код
Public bCancelClose As Boolean
[/vba]
и обработчики:
[vba]
Код
Private Sub ДА_Click() ThisWorkbook.Save Me.Hide End Sub Private Sub НЕТ_Click() ThisWorkbook.Saved = 1 Me.Hide End Sub Private Sub ОТМЕНА_Click() bCancelClose = 1 Me.Hide End Sub
[/vba]
Хотя первый вариант мне тоже нравится - он наглядный и легко читаемый. Mikael
Сообщение отредактировал Mikael - Среда, 10.01.2018, 19:14
Ответить
Сообщение Я тут немного подумал и укоротил код
в модуль книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) With Выход .Show If .bCancelClose Then Cancel = 1 End With Unload Выход End Sub
[/vba]
публичную переменную в модуль формы:
[vba]
Код
Public bCancelClose As Boolean
[/vba]
и обработчики:
[vba]
Код
Private Sub ДА_Click() ThisWorkbook.Save Me.Hide End Sub Private Sub НЕТ_Click() ThisWorkbook.Saved = 1 Me.Hide End Sub Private Sub ОТМЕНА_Click() bCancelClose = 1 Me.Hide End Sub
[/vba]
Хотя первый вариант мне тоже нравится - он наглядный и легко читаемый. Автор - Mikael Дата добавления - 10.01.2018 в 19:08
Starbirst
Дата: Среда, 10.01.2018, 20:51 |
Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
Ребята! Гениально!!! Огромная благодарность!
Ребята! Гениально!!! Огромная благодарность! Starbirst
Сообщение отредактировал Starbirst - Среда, 10.01.2018, 21:15
Ответить
Сообщение Ребята! Гениально!!! Огромная благодарность! Автор - Starbirst Дата добавления - 10.01.2018 в 20:51
Starbirst
Дата: Четверг, 11.01.2018, 07:32 |
Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
Mikael, спасибо большущее :-) Сможете усовершенствовать код таким образом, чтобы диалоговое окно UserForm не открывалось при закрытии Excel, если в книге не были произведены изменения?
Mikael, спасибо большущее :-) Сможете усовершенствовать код таким образом, чтобы диалоговое окно UserForm не открывалось при закрытии Excel, если в книге не были произведены изменения? Starbirst
Ответить
Сообщение Mikael, спасибо большущее :-) Сможете усовершенствовать код таким образом, чтобы диалоговое окно UserForm не открывалось при закрытии Excel, если в книге не были произведены изменения? Автор - Starbirst Дата добавления - 11.01.2018 в 07:32
and_evg
Дата: Четверг, 11.01.2018, 07:41 |
Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 470
Репутация:
82
±
Замечаний:
0% ±
Excel 2007
Starbirst , [vba]Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not (ThisWorkbook.Saved) Then With Выход .Show If .bCancelClose Then Cancel = 1 End With Unload Выход End If End Sub
[/vba]
Starbirst , [vba]Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not (ThisWorkbook.Saved) Then With Выход .Show If .bCancelClose Then Cancel = 1 End With Unload Выход End If End Sub
[/vba]and_evg
Ответить
Сообщение Starbirst , [vba]Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not (ThisWorkbook.Saved) Then With Выход .Show If .bCancelClose Then Cancel = 1 End With Unload Выход End If End Sub
[/vba]Автор - and_evg Дата добавления - 11.01.2018 в 07:41
Starbirst
Дата: Четверг, 11.01.2018, 08:07 |
Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация:
0
±
Замечаний:
0% ±
Excel 2003
Огромная благодарность!
Ответить
Сообщение Огромная благодарность! Автор - Starbirst Дата добавления - 11.01.2018 в 08:07