Всплывающее окно VBA MsgBox в соответствии со значением ячейки

Я пытаюсь настроить электронную таблицу для возврата окна сообщения всякий раз, когда вводится значение ячейки, у меня есть приведенный ниже код, который отлично работает только для 1 ячейки.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range
    Set A = Range("D5")
    If Intersect(Target, A) Is Nothing Then Exit Sub
    If Target.Value = "Yes" Then
        MsgBox "Message"
    End If
End Sub

Мне нужно, чтобы MsgBox всплывало всякий раз, когда встречается любой из этих 3: D5="Yes", B5="No" и B13="Submit form", однако я не могу заставить его всплывать более чем на 1 ячейку в данный момент времени, записывая в один модуль или 3 отдельные. Каждое из полей для каждой из этих ячеек должно возвращать разные сообщения, например, D5="Да" MsgBox "Пожалуйста, заполните..." или B5="Нет" MsgBox "Отправить форму"


person IttookJohnLee    schedule 08.08.2018    source источник


Ответы (1)


Просто включите все тесты в событие последовательно.

Этот код также будет обрабатывать одновременное изменение более чем одной ячейки (например, Target, содержащее более одной ячейки), чего не будет в вашем исходном коде.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range

    Set A = Me.Range("D5")
    If Not Intersect(Target, A) Is Nothing Then
        If A = "Yes" Then
            MsgBox "Message for D5"
        End If
    End If

    Set A = Me.Range("B5")
    If Not Intersect(Target, A) Is Nothing Then
        If A = "No" Then
            MsgBox "Message for B5"
        End If
    End If

    Set A = Me.Range("B13")
    If Not Intersect(Target, A) Is Nothing Then
        If A = "Submit form" Then
            MsgBox "Message for B13"
        End If
    End If
End Sub
person chris neilsen    schedule 08.08.2018