Я внес некоторые изменения в ваш код.
Function EditableOn() As Boolean
EditableOn = True
End Function
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
If EditableOn = True Then
MsgBox "Work"
End if
End If
End Sub
Сохраните процедуру события в модуле кода любого листа. Вы можете сохранить функцию EditableOn
в том же модуле или в стандартном модуле кода.
Теперь, когда вы щелкнете по A1 на листе, в модуль кода которого вы вставили процедуру события, событие Worksheet_SelectionChange
будет произойдет, и процедура с таким именем будет запущена. Фактически, это событие будет происходить при каждом нажатии, где угодно на листе, и процедура будет выполняться каждый раз, но ничего не будет сделано, потому что pro c сравнивает адрес щелчка (Target
) с адресом A1 и пропустить все, что не совпадает.
Поскольку вы нажали A1, критерий удовлетворен, и процедура события вызовет функцию EditableOn
. Эта функция ничего не делает. Возможно, в будущем вы разрешите ему загрузить что-нибудь из inte rnet и вернуть True
, только если загрузка прошла успешно. На данный момент функция просто возвращает True
. Больше ничего не может вернуть (пока). Поэтому процедура события покажет MsgBox с сообщением «Работа». Это будет происходить каждый раз, когда вы нажимаете на A1, за исключением того, что вы не можете нажимать на A1 более одного раза подряд. Выберите другую ячейку между ними.