You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中If判断时两个数组元素值不相等的原因及类型转换方法

问题原因

Split函数拆分字符串返回的数组所有元素均为字符串类型,而Array(2,3,4)生成的数组元素为数值类型,二者类型不一致,直接做相等判断会返回假,因此弹出NO。

解决方法

方案1:判断时临时转换类型(无需修改数组原有结构)

在相等判断时用CInt()函数将字符串类型的数组元素转为整型即可,仅需修改判断行代码:

If CInt(A_arr(0)) = B_arr(0) Then
    MsgBox "YES"
Else
    MsgBox "NO"
End If

修改后运行即可弹出YES。如果要转长整型可以用CLng(),转通用数值可以用Val()。

方案2:批量转换A_arr全部元素为整型

如果后续需要多次使用A_arr的数值属性,可以拆分后遍历数组逐个转换类型,完整修改代码如下:

Private Sub aaa()
    Dim A As String, A_arr As Variant, B_arr As Variant
    Dim i As Integer
    A = "2,3,4"
    A_arr = Split(A, ",")
    ' 遍历数组逐个转整型
    For i = LBound(A_arr) To UBound(A_arr)
        A_arr(i) = CInt(A_arr(i))
    Next i

    B_arr = Array(2, 3, 4)

    If A_arr(0) = B_arr(0) Then
        MsgBox "YES"
    Else
        MsgBox "NO"
    End If
End Sub

注意:如果拆分出来的字符串不是合法数值,CInt转换会抛出错误,建议转换前先用IsNumeric()函数判断元素是否为合法数值。

内容的提问来源于stack exchange,提问作者Atipong Chamnanjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:06:04