调用Split函数时出现Type Mismatch Error(13)错误求助
问题排查与解决方案
核心问题
执行Images = Split(ActiveCell.Value, "|")时报错,已确认ActiveCell.Value为字符串类型,Images声明为数组,但仍触发错误。
可能的原因及修复方案
数组声明类型不匹配
原代码中Dim VarSKU, MissingImage, Images(), HandleCol As String仅将HandleCol声明为String类型,Images()实际是Variant数组而非String数组。虽然Split函数返回String数组,但赋值给Variant数组可能因隐式类型转换触发异常。
修复:将数组声明改为明确的字符串数组:Dim Images() As StringActiveCell值的隐式类型问题
即使VarType显示为字符串,若单元格是公式返回值或存在特殊格式,ActiveCell.Value可能携带隐藏的Variant属性。强制转换为字符串可避免此问题:Images = Split(CStr(ActiveCell.Value), "|")分隔符不匹配(含不可见字符)
确认单元格中的分隔符是半角|(ASCII码124),而非全角|或含不可见字符。可通过调试语句验证:Debug.Print "分隔符ASCII码:" & Asc(Mid(ActiveCell.Value, InStr(ActiveCell.Value, "|"), 1))若输出不是124,说明分隔符不符,需替换为正确的半角
|。空值或无分隔符边界情况
若单元格值为空或无|分隔符,Split会返回仅含空字符串的数组,但部分场景下可能因数组初始化逻辑报错。可增加前置判断:If Len(ActiveCell.Value) > 0 Then Images = Split(CStr(ActiveCell.Value), "|") Else ReDim Images(0 To 0) Images(0) = "missing-image" End If
内容的提问来源于stack exchange,提问作者MarcW
相关产品推荐
相关产品推荐

