powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
8 сообщений из 8, страница 1 из 1
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36785046
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброе время суток!

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

Однако пользователь делает два клика мыши. Возникает событие BeforeDoubleClick – двойной клик мыши, ячейка переходит в режим редактирования, а загруженная форма блокируется. Для выхода из положения необходимо закрыть форму, причём используя событие SelectionChange и повторить процедуру с одним кликом мыши.

Такой вопрос – как заблокировать событие BeforeDoubleClick – двойной клик мыши во время начала обработки события SelectionChange и, таким образом не допустить блокировку формы ?
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36785071
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выбирай на вкус:
- Заблокировать ячейки способные вызывать форму от редактирования
- Первой командой в обработчике поставить application.enableevents=false
- Не заниматься мазохизмом рисуя ГУИ в Эксель
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36785100
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl- Не заниматься мазохизмом рисуя ГУИ в Эксель
О-о! Сова опять опять откопал томогавк и вышел на тропу войны :-)
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36786671
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)White Owl- Не заниматься мазохизмом рисуя ГУИ в Эксель
О-о! Сова опять опять откопал томогавк и вышел на тропу войны :-)А у тебя было впечатление что я его закапывал???
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36786989
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА у тебя было впечатление что я его закапывал???
Признаться, был грех, но это было, когда я активно участвовал в этом форуме :) Я наверное много пропустил ;)
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36789674
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, спасибо за отзыв.

Третий вариант не рассматривался. Пользователь созданной программы сегодня стал технологическим лидером.

Остаётся первых два варианта. С инструкцией EnableEvents=False результата не достиг. Если эту инструкцию вставить в начале Private Sub Worksheet_SelectionChange(ByVal Target As Range), то не загружается форма. Не даёт эффекта код

EnableEvents=False
UserForm1.Show
EnableEvents=True

или код в модуле формы

Private Sub UserForm_Initialize()
EnableEvents=False
End Sub

Private Sub UserForm_Terminate()
EnableEvents=True
End Sub

Остаётся защита листа. Очевидно единтвенная профилактика блокировать BeforeDoubleClick при обработке события SelectionChange.
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36791937
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант решения 1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
' Form sheet module code
Const CallingFormCells = "A1,B2,C3:C5"  ' Выделение этих ячеек активирует форму

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = Not Intersect(Range(CallingFormCells), Target) Is Nothing
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Range(CallingFormCells), Target) Is Nothing Then UserForm1.Show
End Sub

Вариант решения 2:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
' Form sheet module code
Const CallingFormCells = "A1,B2,C3:C5"  ' Выделение этих ячеек активирует форму
Dim IsBusy As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Intersect(Range(CallingFormCells), Target) Is Nothing Then Exit Sub
  IsBusy = True
  UserForm1.Show
  IsBusy = False
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = IsBusy
End Sub
...
Рейтинг: 0 / 0
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
    #36792263
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZVI, выбор есть. Раборает как защита, даже лучше - нет диалога. Большое спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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