试图在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
它应该工作。
- VBA读取表格和单元格号码并执行function
- 如何从下拉列表中select所有的值,或者在VBA中只使用SQL查询来select单个值?
- Excel VBA:Range.Match不会返回任何内容
- Range类的AutoFilter方法失败(Dispatch vs EnsureDispatch)
- 32位Excel加载项可以在64位Excel中工作吗?
- 如何根据行标题replace单元格的内容?
- 使用C#设置HSSFWork工作表中特定单元格的背景颜色
- 如果数据stream中的某些文件不存在,如何成功运行数据stream任务
- 当使用OleDbConnection的Open方法时,C#Excel不会自行closures