试图在Isnumeric中使用嵌套的Instr函数

我想在VBA中编写一个excel程序来search“names”列,如果这个名字里面有区分大小写的string“CAN”,那么列6列将会被添加到总计(canadaTotal)。 这是我迄今为止…问题是在instr / isnumeric部分。 我确定我正在使用其中一个不正确的..如果有人可以提供一个替代解决scheme,或快速解决,我将不胜感激。

(提示…我不知道如果我可以使用我的“search”variables作为instr函数的第二个input…)

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 

你遇到的问题是Instr函数从位置1开始,而不是位置0。

另外,如果没有findstring,Instr返回0,而不是非数字值,所以你的testing总是成立的。

此外,Instr的默认值是它不会search区分大小写。 为了search区分大小写,您需要使用最后的“比较”参数并将其设置为vbBinaryCompare。

将其更改为:

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

它应该工作。