2014-02-19 80 views
4

這似乎不起作用。有沒有辦法做我想在這裏做的事情?我不能,如果值是在給定的刺來選擇的情況下:在Select Case中使用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

我會用'如果...那麼... Else'這種情況 –

回答

20

這裏是一個小把戲我使用,SELECT語句只是想找到的結果是相同的。這裏有一個簡單的例子:

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