2014-02-19 4 views
4

Это, похоже, не работает. Есть ли способ сделать то, что я пытаюсь сделать здесь? Я не могу случай должен быть выбран, если значение в данном жала:Использование функции InStr в случае выбора

Select Case gTTD.Cells(r, 4) 

    Case InStr(gTTD.Cells(r, 4), "MASTER LOG") 
     resp = "MM LOG" 
     Case InStr(gTTD.Cells(r, 4), "MASTER MET") 
     resp = "MM MET" 
    Case "PIR" 
     gTTD.Cells(r, 7) = "Martin Trépanier" 
     resp = "Martin Trépanier" 

End Select 

Я понимаю, почему это косяк работу, но есть способ заставить его работать? спасибо

Спасибо

+0

Я хотел бы использовать 'If ... Then ... Else' для этого случая –

ответ

20

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

Select Case True 
     Case (1 = 2) 
      Stop 
     Case (2 = 3) 
      Stop 
     Case (4 = 4) 
      Stop 
     Case Else 
      Stop 
    End Select 

Это упадет в корпус 4 = 4. В вашем примере, это может быть простой ответ:

Select Case True 

    Case (InStr(gTTD.Cells(r, 4), "MASTER LOG") > 0) 
     resp = "MM LOG" 
     Case (InStr(gTTD.Cells(r, 4), "MASTER MET") > 0) 
     resp = "MM MET" 
    Case else 
     gTTD.Cells(r, 7) = "Martin Trépanier" 
     resp = "Martin Trépanier" 
End Select 
+0

+1 Стив, хороший трюк :) –

+0

я это хорошо! Очень интересная концепция thatnks – user2385809

+0

Извините, но я не понимаю '> -1'. Для меня использование 'InStr()> -1' всегда будет возвращать' True', я прав? –

0

попробовать этот

dim r as integer 
for r = 1 to 'number of rows 
    if Instr(gTTD.Cells(r, 4), "MASTER LOG") <> 0 then 
     resp = "MM LOG" 
    elseif Instr(gTTD.Cells(r, 4), "MASTER MET") <> 0 then 
     resp = "MM MET" 
    else 
     gTTD.Cells(r, 7) = "Martin Trépanier" 
     resp = "Martin Trépanier" 
    end if 
next r 
Смежные вопросы