Страницы: 1
RSS
VBA: метод Select Case, несколько условий
 
Добрый день, подскажите, плиз, я что-то не правильно делаю или так не возможно в принципе?
Код
Select Case t7Arr(t, 4)
    Case Is = "R" And bArr(f,4) <> "ОТС" <------------- ошибка Type Mismatch

 
Может быть так -
Код
Select Case t7Arr(t, 4)    
  Case "R": IF bArr(f,4) <> "ОТС" THEN
?
 
Апострофф,да так работает, но по сути это сокращенная запись того что ниже?
Код
                 Case Is = "R"
                    If bankArr(b, 4) <> "ОТС" Then
 
Да, именно так.
А Вы пытались (через Селект) выполнить следующее сравнение -
Код
if t7Arr(t, 4) = "R" And bArr(f,4) <> "ОТС"
Оператор AND работает только с целыми числами (никак не со строками) - отсюда и ошибка Type Mismatch.
 
странно , у меня все работает
Код
Sub ttt()
A = "www": b = "www": c = "aaa": d = "aaa"
If A = b And c = d Then MsgBox "f"

End Sub
 
Ничего странного, A=b не в контексте присваивания - TRUE(=-1) или FALSE(=0), т.е. целые числа.
В Вашем случае получаем
Код
IF -1 AND -1 THEN MsgBox "f"
 
Работает, - потому что в вашем случае сравниваются ЧИСЛА
If A = b And c = d Then MsgBox "f"
это то же самое, что и
If -1 And -1 Then MsgBox "f"
т.к. ваша строка кода интерпретируется так:
If (A = b) And (c = d) Then


и такое будет работать:
if t7Arr(t, 4) = "R" And bArr(f,4) <> "ОТС"
т.к. VBA увидит тут
if (t7Arr(t, 4) = "R") And (bArr(f,4) <> "ОТС")
т.е. после вычислений получится
if 0 And -1


а исходный пример не работает
Case Is = "R" And bArr(f,4) <> "ОТС"
там скобки иначе ставятся:
Case Is = ("R" And (bArr(f,4) <> "ОТС"))
что после вычисления будет
Case Is = ("R" And -1)
потому и ошибка была
 
тоесть в исходном случае
Код
Select Case t7Arr(t, 4)
    Case Is = "R" And bArr(f,4) <> "ОТС"

Case Is = "R"  не может принять значения -1 или 0 ?
 
разобрался. всем спасибо
 
Код
Select Case True
    Case t7Arr(t, 4) = "R" And bArr(f,4) <> "ОТС"
KL
Страницы: 1
Наверх