Excel VBA требуется логическая помощь - PullRequest
0 голосов
/ 28 февраля 2020

Мне нужна помощь.

У меня есть функция

Function Function_EditableOn() As Boolean

End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

if Function_EditableOn = True Then
msgbox("Work")
End if

End Sub

Я хочу выполнить булеву загрузку из «Function_EditableOn», чтобы, если она равнялась true, в Private Sub Worksheet_SelectionChange you сможет выполнять некоторые функции, например, появится надпись

1 Ответ

0 голосов
/ 28 февраля 2020

Я внес некоторые изменения в ваш код.

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 более одного раза подряд. Выберите другую ячейку между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...