Событие BeforeDoubleClick предоставляет возможность создать процедуру, которая будет выполняться автоматически при двойном щелчке левой клавиши мыши на конкретной ячейке в таблице Excel. В представленном ниже примере кода, который следует разместить в окне кода объекта Sheet (Лист), рассматривается использование этого события:
В данном коде определена процедура, которая выполняется при двойном щелчке на ячейке. Если содержимое ячейки равно "дата", то оно будет заменено текущей датой. Если содержимое ячейки равно "время", то оно будет заменено текущим временем. Если ячейка не пуста, то ее содержимое останется неизменным. И если Cancel = False, то Excel переходит в режим редактирования ячейки при двойном щелчке.
Рассмотрим код:
- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean): Объявление процедуры, которая выполняется перед двойным щелчком на ячейке. Target - это ячейка, на которой произошел щелчок, Cancel - переменная для блокировки операции по умолчанию.
- If Target = "дата" Then: Проверка, содержит ли ячейка текст "дата".
- Target.Value = Date: Установка значения ячейки на текущую дату, если условие в пункте 2 истинно.
- ElseIf Target = "время" Then: Проверка, содержит ли ячейка текст "время".
- Target.Value = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now): Установка значения ячейки на текущее время (часы:минуты:секунды), если условие в пункте 4 истинно.
- ElseIf Target <> "" Then: Проверка, не является ли ячейка пустой.
- Target.Value = Target.Value: Если условие в пункте 6 истинно, то значение ячейки остается неизменным.
- Else: Если ни одно из условий не выполняется, то:
- Target.Value = "": Установка значения ячейки в пустую строку.
- Cancel = False: Отмена блокировки операции по умолчанию, позволяя Excel перейти в режим редактирования ячейки.
- 'Cancel = True: Эта строка закомментирована и, если «раскомментировать» (а Cancel = False наоборот закомментировать), блокирует операцию по умолчанию, предотвращая переход в режим редактирования ячейки при двойном щелчке.
- End Sub: Конец процедуры.
и вот событие произошло:
Теперь рассмотрим, как использовать аргумент Cancel. Если аргументу Cancel присвоено значение True, то это блокирует операцию, выполняемую по умолчанию после двойного щелчка мыши. Другими словами, если Cancel установлен в True, Excel не перейдет в режим редактирования ячейки при двойном щелчке.
Путем установки Cancel в True мы предотвращаем переход Excel в режим редактирования ячейки при двойном щелчке на ней (нужно это или нет решать только вам, в зависимости от поставленных условий). Это позволяет более тщательно контролировать действия, выполняемые после данного события, в зависимости от условий, заданных в коде.