Давайте посмотрим как определить событие выбора определной ячейки. Первое — это надо определить, что вообще что-то выбрали. Для этого создайте книгу. Запустите редактор VBA и щелкните на листе. Для данного листа будет создана функция SelectionChange, если ее нет, то у Вас всегда есть возможность ее выбрать. Теперь впишите код сообщения в функцию, чтобы увидеть, что происходит.
У Вас теперь есть возможность щелкать по ячейкам конкретного листа, я еще раз повторяю и вы получите сообщение с адресом ячейки. Сообщение выбора ячейки обрабатывается локально. А что если у нас надо обрабатывать это сообшение с трех листов и желательно вместе. Для этого нужно создать модуль и в нем процедуру обработки. Я пока поместил туда просто вывод информационного окна.
И соотвественно надо пересылать туда данный с каждого листа.
Вот с этого момента можно вставлять вызов функции Selection_Cell на каждый лист в ответ на реакцию выделения.
Но это еще не все. Дело в том, что передается объект типа RANGE, то есть нет разницы передана одна ячейка или диапазон. Но при выделении диапазона внутрь него может попасть и наша ячейка. Итак, нам надо бы анализировать диапазон. Давайте договоримся, что нам надо обязательно отловить момент выделения ячейки $A$1. Вот на всех листах. У нас для этого все есть. Процедура общая, в которой есть адрес. И реакция на выделение на каждом листе. Смотрим код:
Идея простая. Мы имеем переданный диапазон Test и нужный Find. Как узнать, что один включает другой . Вызовем операцию пересечения Intersect. Результатом будет диапазон, который содержит пересечение. Так вот если искомая нам ячейка в нем есть, то нормально, а если нет, то обращение к Count вызовет ошибку. Этим мы и воспользовались.
Возникает при изменении ячеек листа пользователем или внешней ссылкой. Occurs when cells on the worksheet are changed by the user or by an external link.
Содержание
- Синтаксис Syntax
- Параметры Parameters
- Возвращаемое значение Return value
- Примечания Remarks
- Пример Example
- Поддержка и обратная связь Support and feedback
- Worksheet_SelectionChange (Открытие книги)
- Worksheet_Activate (Событие активации листа)
- Worksheet_Deactivate (Событие деактивации листа)
- Worksheet_BeforeDoubleClick (Событие двойного щелчка по ячейке)
- Worksheet_BeforeRightClick (Событие перед правым кликом)
- Worksheet_Calculate (Событие перерасчета листа)
- Worksheet_Change (Событие изменения содержимого ячейки)
- Worksheet_FollowHyperlink (Событие нажатия на ссылку)
- Temporarily deactivate all events (Временное отключение всех событий)
Синтаксис Syntax
Expression. Изменение (Цель) expression.Change (Target)
Expression (выражение ) Переменная, представляющая объект листа . expression A variable that represents a Worksheet object.
Параметры Parameters
Возвращаемое значение Return value
Nothing Nothing
Примечания Remarks
Это событие не происходит при изменении ячеек во время пересчета. This event does not occur when cells change during a recalculation. Используйте событие Calculate для перехвата пересчета листа. Use the Calculate event to trap a sheet recalculation.
Пример Example
В приведенном ниже примере кода цвет измененных ячеек изменяется на синий. The following code example changes the color of changed cells to blue.
В приведенном ниже примере кода проверяется, когда изменяется значение ячейки, измененная ячейка находится в столбце A, и если измененное значение ячейки превышает 100. The following code example verifies that, when a cell value changes, the changed cell is in column A, and if the changed value of the cell is greater than 100. Если значение больше 100, смежная ячейка в столбце B изменяется на красный цвет. If the value is greater than 100, the adjacent cell in column B is changed to the color red.
В приведенном ниже примере кода значения в диапазоне a1: A10 задаются в верхнем регистре при вводе данных в ячейку. The following code example sets the values in the range A1:A10 to be uppercase as the data is entered into the cell.
Поддержка и обратная связь Support and feedback
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
На предыдущем уроке мы рассматривали события, относящиеся к целой книги. Сейчас мы сфокусируемся на событиях связанных с отдельным листом.
Worksheet_SelectionChange (Открытие книги)
Чтобы выполнить инструкции, основанные на событиях для отдельного листа, выберите лист в редакторе, а затем Worksheet :
Событие SelectionChange будет добавлено по умолчанию. Это событие выполняется когда бы не изменялось содержание диапазона:
Например, следующий код добавляет цвета заливки одного или более выбранных ячеек и автоматически удаляет цвет заливки от предыдущего выбранного диапазона, когда данный диапазон меняется:
Worksheet_Activate (Событие активации листа)
Это событие возникает при активации рабочего листа
Worksheet_Deactivate (Событие деактивации листа)
Это событие возникает при активации другого рабочего листа
Worksheet_BeforeDoubleClick (Событие двойного щелчка по ячейке)
Это событие возникает при двойном щелчке на ячейке рабочего листа:
Worksheet_BeforeRightClick (Событие перед правым кликом)
Это событие возникает перед самым кликом правой кнопки мыши по рабочему листу
Worksheet_Calculate (Событие перерасчета листа)
Это событие возникает каждый раз, когда рассчитываются или пересчитываются данные на рабочем листе
Worksheet_Change (Событие изменения содержимого ячейки)
Это событие возникает каждый раз, когда изменяется содержимое ячеек на заданном листе:
Worksheet_FollowHyperlink (Событие нажатия на ссылку)
Это событие возникает при нажатии на ссылку (гипертекст)
Temporarily deactivate all events (Временное отключение всех событий)
Чтобы выполнять код без каких-либо событий, вставьте его между двумя строчками такого кода:
Источник: