использовать и или одновременно в состоянии if Макрос - PullRequest
0 голосов
/ 04 августа 2020

Я уже создал макрос, например

If UserForm5.MultiPage1.Pages(5).Visible And UserForm5.ComboBox10 <> "A" Then

      If IsEmpty(Combobox10) Then
        MsgBox "Please FILL it", vbOKOnly, "Missing Data"
        UserForm5.MultiPage1.Value = 5
        UserForm5.ComboBox10.SetFocus
        Exit Sub
        End If

Однако мне нужно добавить еще одно исключение, например b, в combobox10, если оно не работает должным образом.

Я изменил код, как показано ниже и ему нужно перейти к пустому разделу, если он этого не делает.

If UserForm5.MultiPage1.Pages(5).Visible And (UserForm5.ComboBox10 <> "A" or UserForm5.ComboBox10 <> "B") Then

      If IsEmpty(Combobox10) Then
        MsgBox "Please FILL it", vbOKOnly, "Missing Data"
        UserForm5.MultiPage1.Value = 5
        UserForm5.ComboBox10.SetFocus
        Exit Sub
        End If

1 Ответ

0 голосов
/ 04 августа 2020

Давайте посмотрим, что ComboBox10.Text <> "A" Or ComboBox10.Text <> "B" будет делать для значений «A», «B» и «C».

Если ComboBox10.Text имеет значение «A», то ComboBox10.Text <> "A" имеет значение False и ComboBox10.Text <> "B" Верно. Это дает нам False Or True, которое разрешается в True.

Если ComboBox10.Text имеет значение «B», то ComboBox10.Text <> "A" имеет значение True, а ComboBox10.Text <> "B" - False. Это дает нам True Or False, которое преобразуется в True.

Если ComboBox10.Text имеет значение «C», то ComboBox10.Text <> "A" - True, а ComboBox10.Text <> "B" - True. Это дает нам True Or True, которое разрешается в True.

Итак, для любого допустимого ввода это условие Or вернет True. Он мог только вернуть False для входа, который одновременно был равен как «A», так и «B».

Исправить это просто: просто используйте UserForm5.ComboBox10.Text <> "A" And UserForm5.ComboBox10.Text <> "B"

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