Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Закрытие UserForm - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрытие UserForm (Макросы/Sub)
Закрытие UserForm
Starbirst Дата: Пятница, 22.12.2017, 22:13 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Доброго времени суток! Даблклик левой кнопки мыши по ячейке D2 открывает календарик. Для того, чтобы закрыть календарик нужно дважды кликнуть левой кнопкой мыши по дате, либо нажать той же кнопкой по любой области UserForm. Ребята, кто подскажет, можно ли выгрузить календарик левой кнопкой мыши по любой ячейке, а также при нажатии кнопки Esc?
К сообщению приложен файл: 8131434.xlsm (67.8 Kb)
 
Ответить
СообщениеДоброго времени суток! Даблклик левой кнопки мыши по ячейке D2 открывает календарик. Для того, чтобы закрыть календарик нужно дважды кликнуть левой кнопкой мыши по дате, либо нажать той же кнопкой по любой области UserForm. Ребята, кто подскажет, можно ли выгрузить календарик левой кнопкой мыши по любой ячейке, а также при нажатии кнопки Esc?

Автор - Starbirst
Дата добавления - 22.12.2017 в 22:13
Wasilich Дата: Суббота, 23.12.2017, 00:41 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
выгрузить календарик левой кнопкой мыши по любой ячейке
В модуль листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Address <> "$D$2" Then JP_Ñalendar_Frm.Hide
End Sub
[/vba]По Esc, вряд ли, по сочетанию клавиш > Alt+F8 > макрос > Параметры > назначайте. Только макрос нужен другой.


Сообщение отредактировал Wasilich - Суббота, 23.12.2017, 00:54
 
Ответить
Сообщение
выгрузить календарик левой кнопкой мыши по любой ячейке
В модуль листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Address <> "$D$2" Then JP_Ñalendar_Frm.Hide
End Sub
[/vba]По Esc, вряд ли, по сочетанию клавиш > Alt+F8 > макрос > Параметры > назначайте. Только макрос нужен другой.

Автор - Wasilich
Дата добавления - 23.12.2017 в 00:41
Starbirst Дата: Понедельник, 25.12.2017, 22:39 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Благодарю! :)
 
Ответить
СообщениеБлагодарю! :)

Автор - Starbirst
Дата добавления - 25.12.2017 в 22:39
Starbirst Дата: Вторник, 26.12.2017, 08:09 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Wasilich, подскажите, пожалуйста, как сделать, чтобы предложенный вами макрос срабатывал на листе, где почти все ячейки защищены от редактирования?
 
Ответить
СообщениеWasilich, подскажите, пожалуйста, как сделать, чтобы предложенный вами макрос срабатывал на листе, где почти все ячейки защищены от редактирования?

Автор - Starbirst
Дата добавления - 26.12.2017 в 08:09
Wasilich Дата: Вторник, 26.12.2017, 14:29 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Если защита мешает макросу, то в начале кода её надо снять[vba]
Код
ActiveSheet.Unprotect
[/vba]
а в конце, снова установить [vba]
Код
ActiveSheet.Protect
[/vba]
Есть и другой вариант для всей книги. В модуль книги
[vba]
Код
Private Sub Workbook_Open()
    Protect , userinterfaceonly:=True
End Sub
[/vba]
 
Ответить
СообщениеЕсли защита мешает макросу, то в начале кода её надо снять[vba]
Код
ActiveSheet.Unprotect
[/vba]
а в конце, снова установить [vba]
Код
ActiveSheet.Protect
[/vba]
Есть и другой вариант для всей книги. В модуль книги
[vba]
Код
Private Sub Workbook_Open()
    Protect , userinterfaceonly:=True
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 26.12.2017 в 14:29
Mikael Дата: Вторник, 26.12.2017, 16:40 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
На кнопку можно посадить командой Application.OnKey

Добавьте в конец события UserForm_Initialize()
[vba]
Код
Application.OnKey "{ESC}", "ESCfromCalend"
[/vba]

В обычный модуль добавьте процедуру
[vba]
Код
Private Sub ESCfromCalend()
    JP_Ñalendar_Frm.Hide
End Sub
[/vba]

Работает когда активен лист
 
Ответить
СообщениеНа кнопку можно посадить командой Application.OnKey

Добавьте в конец события UserForm_Initialize()
[vba]
Код
Application.OnKey "{ESC}", "ESCfromCalend"
[/vba]

В обычный модуль добавьте процедуру
[vba]
Код
Private Sub ESCfromCalend()
    JP_Ñalendar_Frm.Hide
End Sub
[/vba]

Работает когда активен лист

Автор - Mikael
Дата добавления - 26.12.2017 в 16:40
Mikael Дата: Вторник, 26.12.2017, 17:28 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
Чтобы обработать нажатие ESC при активной форме нужно добавить обработчик событий формы _KeyDown для всех элементов формы, которые могут иметь фокус.

Например, когда в фокусе текстбокс Data:
[vba]
Код
Private Sub txbx_Data_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 27 Then Me.Hide
End Sub
[/vba]

и так для каждого элемента формы таких как combobox, textbox, multipage и т.п.
 
Ответить
СообщениеЧтобы обработать нажатие ESC при активной форме нужно добавить обработчик событий формы _KeyDown для всех элементов формы, которые могут иметь фокус.

Например, когда в фокусе текстбокс Data:
[vba]
Код
Private Sub txbx_Data_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 27 Then Me.Hide
End Sub
[/vba]

и так для каждого элемента формы таких как combobox, textbox, multipage и т.п.

Автор - Mikael
Дата добавления - 26.12.2017 в 17:28
Starbirst Дата: Суббота, 30.12.2017, 23:48 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо:-)
 
Ответить
СообщениеСпасибо:-)

Автор - Starbirst
Дата добавления - 30.12.2017 в 23:48
Starbirst Дата: Суббота, 30.12.2017, 23:51 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
А можно ли реализовать такое:
предположим на защищенном листе имеется кнопка для вызова Userform, в которой не предусмотрено наличие кнопки "закрыть окно". Можно ли закрыть форму кликом левой кнопки мыши по любой области книги без выделения определенной ячейки?
 
Ответить
СообщениеА можно ли реализовать такое:
предположим на защищенном листе имеется кнопка для вызова Userform, в которой не предусмотрено наличие кнопки "закрыть окно". Можно ли закрыть форму кликом левой кнопки мыши по любой области книги без выделения определенной ячейки?

Автор - Starbirst
Дата добавления - 30.12.2017 в 23:51
ББЛЯЯ Дата: Воскресенье, 31.12.2017, 01:04 | Сообщение № 10
Группа: Заблокированные
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
выделения определенной ячейки?

А как эксель узнает, что по книге кликнули? Только если выделилась какая-нибудь ячейка.
 
Ответить
Сообщение
выделения определенной ячейки?

А как эксель узнает, что по книге кликнули? Только если выделилась какая-нибудь ячейка.

Автор - ББЛЯЯ
Дата добавления - 31.12.2017 в 01:04
Starbirst Дата: Воскресенье, 31.12.2017, 01:15 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 83
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Выгрузку формы можно произвести кликом по ней. У меня возникло предположение быть может подобное возможно сделать кликом по любой области внутри защищенной книги.
 
Ответить
СообщениеВыгрузку формы можно произвести кликом по ней. У меня возникло предположение быть может подобное возможно сделать кликом по любой области внутри защищенной книги.

Автор - Starbirst
Дата добавления - 31.12.2017 в 01:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрытие UserForm (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!