2014-02-19 52 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