2015-06-23 79 views
0

我正在嘗試在VBA中爲excel編寫一個程序,該程序將通過「名稱」列進行搜索,如果該名稱中包含區分大小寫的字符串「CAN」 ,那麼6列以上的列將被添加到總數(canadaTotal)。這是我迄今爲止......問題是在instr/isnumeric部分。我確定我正在使用其中的一個不正確。如果有人可以提供替代解決方案或快速解決方案,我將不勝感激。試圖在Isnumeric中使用嵌套Instr函數

(提示...我不知道如果我可以用我的「搜索」變量作爲InStr函數的第二個輸入...)

Private Sub CommandButton5_Click() 
Dim i As Integer 
Dim col As Integer 
Dim canadaTotal As Integer 
Dim search As String 
Dim canadaCheck As Long 
i = 1 
col = 4 
canadaTotal = 0 

Worksheets("sheet1").Activate 

While Not Worksheets("Sheet1").Cells(i, col).Value = "" 
search = Cells(i, col).Value 

If IsNumeric(InStr(0, search, "CAN")) Then 


canadaTotal = canadaTotal + Cells(i, col).Offset(0, 6).Value 

End If 

i = i + 1 

Wend 
MsgBox (canadaTotal) 
End Sub 

回答

2

您所遇到的問題是, Instr函數從位置1開始,而不是位置0.

另外,如果字符串未找到,Instr返回0,而非非數字值,所以您的測試將始終爲真。

此外,Instr的默認值是它不會搜索區分大小寫。爲了搜索區分大小寫,您需要使用最後一個「比較」參數並將其設置爲vbBinaryCompare。

更改爲:

If Instr(1, search, "CAN", vbBinaryCompare) <> 0 Then 

,它應該工作。