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

Excel VBA使用Evaluate时出现Type mismatch错误求助

问题分析与解决方案

错误原因

触发类型不匹配的核心问题是:Evaluate执行工作表函数后返回的是Variant数组(哪怕结果是单个数值,也会被包装成数组),直接和数值0做比较时,VBA无法完成类型匹配,因此抛出错误13。

另外,这段代码完全没必要调用工作表的MOD函数——VBA本身自带Mod运算符,直接用行号变量i计算更高效,也能避免这类类型问题。

修复方案

方案1:修正现有Evaluate写法

如果一定要保留工作表函数的调用,需要把返回的数组转换成单个数值:

Sub copcol()
    Dim nmr As Variant
    Sheets(1).Activate
    lrow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For i = 1 To lrow
        ' 取数组的第一个元素,转换成数值
        nmr = Evaluate("=MOD(ROW(A" & i & "),10)")(1, 1)
        If nmr = 0 Then
            ' Do something
        End If
    Next i ' 原代码缺少该语句,会导致语法错误
End Sub

方案2:改用VBA原生Mod运算符(推荐)

直接用行号变量i计算,完全避免Evaluate的类型问题,代码更简洁高效:

Sub copcol()
    Sheets(1).Activate
    lrow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For i = 1 To lrow
        ' 直接用VBA原生Mod运算符计算行号除以10的余数
        If i Mod 10 = 0 Then
            ' Do something
        End If
    Next i
End Sub

额外注意

你原代码还缺少Next i和End Sub语句,这会导致语法错误,记得补充完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:12:33