Как присвоить ячейке событие
Ячейку я заполняю быстрой клавой "Ctrl+Sh+;".
Спасибо.
If Target.Column = 15 Then
If Target.Value <> "" Then
With Rows(Target.Row)
.Font.ColorIndex = 1
.Interior.ColorIndex = 15
.Interior.Pattern = xlSolid
End With
End If
End If
End Sub
Этот код надо разместить в модуле кода того рабочего листа, на котором Вам нужно выполнить описанные действия.
Еще раз прошу прощения за возможную тупость.:o
Всё очень просто.
1) Каждый рабочий лист книги - это объект. Кроме рабочих листов книга может содержать и другие объекты, например, листы диаграмм, формы...
2) За каждым объектом книги закреплён специальный модуль для размещения кодов макросов, обрабатывающих события этого объекта.
3) Все объекты и их модули кода входят в состав VB-проекта книги.
Добраться до модуля кода рабочего листа можно так:
- нажать Alt-F11 (в левом верхнем углу, сразу под панелью инструментов, будет отображаться дерево объектов VB-проекта книги);
- указать "мышью" на имя нужного объекта и дважды щёлкнуть левой кнопкой (откроется окно модуля кода этого объекта).
Остаётся вставить приведённый мной пример кода в этот модуль.
Изменение содержимого ячейки (хоть вставка, хоть удаление, хоть редактирование) - это событие, объекта типа "Рабочий лист" ("Worksheet"). Название события - "Change". Оно регистрируется приложением автоматически. Если в модуль кода рабочего листа вставить процедуру обработки этого события, то можно заставить Excel выполнять при изменении содержимого ячейки те или иные действия.
Код обработки события рабочего листа в этом списке не отображается. Следовательно, вручную вызвать его для исполнения нельзя. Но в этом и нет необходимости. Как уже сказано, он будет активирован автоматически.
Код разместил в модуле листа.
Но после вставки времени в нужный столбец ничего не меняется. Может надо указать, что при наступлении события в этиой ячейке надо то-то и то-то?
И на строке Worksheet_Change(ByVal Target As Range) не вызывается помощь. Т.е. Help не знает таких слов ;)