Ячейка, содержащая текст с другими требованиями - PullRequest
1 голос
/ 17 июня 2020

Я хочу выполнить IF с 3 операторами AND. Мне нужна только 1 команда IF, и она должна соответствовать 3 требованиям

value of cell a1 should be more than 5
value of cell a2 should not be "True"
value of cell a3 should not contain "shop"

Первые два легко предсказать, но я не знаю, как выполнить 3-ю операцию, потому что в vba нет чего-то вроде «не нравится». Я не могу использовать IF в IF, поэтому я взял этот InStr (CELL, который я проверяю, "shop") = 0, и он должен показать мне 0 = 0, если в ячейке нет магазина, верно? Но все равно не работает: P

IF Cells(1,1).Value > 5 And Cells(2,1).Value <> "True" And InStr(Cells(3,1).Value,"shop") = 0 Then

1 Ответ

0 голосов
/ 17 июня 2020

Множественные конкатенированные logi c тесты часто намного проще в управлении и понимании, если вы инкапсулируете их в функцию

Например, сложный тест

IF Cells(1,1).Value > 5 And Cells(1,1).Value <> "True" And InStr(Cells(3,1).Value,"shop") = 0 Then

Может быть лучше написано как

If not TryYourTestName(Cells(1,1).Value,Cells(1,1).Value,Cells(3,1).Value) then 'do action when test fails
'Do actions when test passes

С функцией

Public Function TryYourTestName(ByVal ipA1 As Long, ByVal ipA2 As Boolean, ByVal ipA3 As String) As Boolean

    TryYourTestName = False
    If ipA1 <= 5 Then Exit Function
    If ipA2 Then Exit Function
    If InStr(ipA3, "Shop") <> 0 Then Exit Function
    TryYourName = True

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