【问题标题】:trying to use a nested Instr function in Isnumeric尝试在 Isnumeric 中使用嵌套的 Instr 函数
【发布时间】:2015-06-24 00:06:53
【问题描述】:

我正在尝试在 VBA 中为 excel 编写一个程序,该程序将搜索一列“名称”,如果该名称中包含区分大小写的字符串“CAN”,那么第 6 列将是加到总数中(canadaTotal)。这就是我到目前为止所拥有的......问题出在 instr/isnumeric 部分。我确定我用错了其中一个。如果有人可以提供替代解决方案或快速修复,我将不胜感激。

(提示...我不确定是否可以使用我的“搜索”变量作为 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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

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

    此外,如果未找到字符串,则 Instr 返回 0,而不是非数字值,因此您的测试将始终为真。

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

    将其更改为:

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

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 2021-09-09
      • 2020-03-08
      相关资源
      最近更新 更多