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

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

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

Такой вопрос – как заблокировать событие BeforeDoubleClick – двойной клик мыши во время начала обработки события SelectionChange и, таким образом не допустить блокировку формы ?
...
Рейтинг: 0 / 0
11.08.2010, 01:15
    #36785071
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
выбирай на вкус:
- Заблокировать ячейки способные вызывать форму от редактирования
- Первой командой в обработчике поставить application.enableevents=false
- Не заниматься мазохизмом рисуя ГУИ в Эксель
...
Рейтинг: 0 / 0
11.08.2010, 02:53
    #36785100
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
White Owl- Не заниматься мазохизмом рисуя ГУИ в Эксель
О-о! Сова опять опять откопал томогавк и вышел на тропу войны :-)
...
Рейтинг: 0 / 0
11.08.2010, 17:44
    #36786671
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
KL (XL)White Owl- Не заниматься мазохизмом рисуя ГУИ в Эксель
О-о! Сова опять опять откопал томогавк и вышел на тропу войны :-)А у тебя было впечатление что я его закапывал???
...
Рейтинг: 0 / 0
11.08.2010, 19:45
    #36786989
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
White OwlА у тебя было впечатление что я его закапывал???
Признаться, был грех, но это было, когда я активно участвовал в этом форуме :) Я наверное много пропустил ;)
...
Рейтинг: 0 / 0
12.08.2010, 23:06
    #36789674
Mishel97
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
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
14.08.2010, 17:26
    #36791937
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
Вариант решения 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
15.08.2010, 10:24
    #36792263
Mishel97
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange
ZVI, выбор есть. Раборает как защита, даже лучше - нет диалога. Большое спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как заблокировать событие BeforeDoubleClick во время обработки события SelectionChange / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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