Две функции диалогового окна под одним Private Sub - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь заставить два диалоговых окна работать под Private Sub Worksheet_Change (ByVal Target as Range). Они должны появляться, когда кто-то вводит определенное значение в диапазон. Первый работает нормально, а второй вообще не показывает. Ниже приведен код, который я использую.

    Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("J2:J54")) Is Nothing Then Exit Sub
  If Target.Value <> "Transportation" Then Exit Sub
     MsgBox "TRANSPORTATION: Remember tolls."
  If Target.Value <> "Guiding" Then Exit Sub
     MsgBox "GUIDING: Remember to add 10%."
End Sub

Может кто-нибудь помочь мне увидеть, где я иду не так?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Альтернативной возможностью может быть использование Select Case, сначала проверка If Not Intersect... Is Nothing, а не выход из подпрограммы, если If Intersect...Is Nothing.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("J2:J54")) Is Nothing Then
        Select Case Target.Value
            Case "Transportation"
                MsgBox "TRANSPORTATION: Remember tolls."
            Case "Guiding"
                MsgBox "GUIDING: Remember to add 10%."
        End Select
    End If
End Sub
0 голосов
/ 30 августа 2018

Вы выходите из сабвуфера в каждой точке. Попробуйте изменить свою логику, а именно:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("J2:J54")) Is Nothing Then Exit Sub
    If Target.Value = "Transportation" Then
        MsgBox "TRANSPORTATION: Remember tolls."
    ElseIf Target.Value = "Guiding" Then
        MsgBox "GUIDING: Remember to add 10%."
    End If
End Sub
...