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

单值输入时VB代码出现Ubound类型不匹配错误13求解决

解决VB单个值场景下UBound类型不匹配问题

问题根源

当lastrow = 28时,Range("C28:C" & lastrow)是单个单元格,赋值给Variant变量后得到的是单个值而非二维数组,而UBound仅能用于数组,因此触发错误13(类型不匹配)。

针对性解决方案

方案1:统一将值转为二维数组(推荐,适配后续逻辑)

在赋值后添加数组判断,将单个值强制转为和多值场景一致的二维数组,后续代码无需修改:

material = wsRem.Range("C28:C" & lastrow).Value
cantidad = wsRem.Range("M28:M" & lastrow).Value

' 处理单个值转二维数组
If Not IsArray(material) Then
    material = Array(Array(material))
End If
If Not IsArray(cantidad) Then
    cantidad = Array(Array(cantidad))
End If

g = UBound(material, 1) ' 此时无论单/多值都能正常获取行数

方案2:直接通过行号计算行数(更简洁)

既然已经拿到了lastrow,直接计算数据行数,完全规避数组相关问题:

lastrow = wsRem.Cells(Rows.Count, "C").End(xlUp).Row
material = wsRem.Range("C28:C" & lastrow).Value
cantidad = wsRem.Range("M28:M" & lastrow).Value

' 直接用行号计算行数,无需UBound
g = lastrow - 28 + 1

关于你之前IF判断未生效的可能原因

如果之前的判断逻辑仅替换变量而未统一数组结构,后续代码可能仍因数据类型不一致报错。比如仅将单值赋值给普通变量,但后续代码仍按数组逻辑处理,就会出现新的类型问题。上述方案1通过统一二维数组结构,能彻底避免这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:07:27