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

使用Evaluate函数获取单元格列号时出现类型不匹配错误求助

解决VBA运行时错误13:类型不匹配问题

你遇到的错误根源在于用Evaluate函数获取列号的写法冗余且易出问题,其实VBA自带单元格列号属性,完全不需要绕弯用Evaluate。

修正方案

直接使用Cells(i,j).Column获取列号,这是VBA内置的可靠属性,效率更高且不会触发类型不匹配:

Sub search()
    Dim whe As Integer
    Dim lrow As Long
    Dim i As Long, j As Integer ' 声明所有变量避免隐式类型问题
    
    lrow = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row

    For i = 2 To lrow
        For j = 3 To 4
            If Cells(i, j).Value = Range("G2").Value Then
                whe = Cells(i, j).Column ' 直接获取列号,替代Evaluate
                
                If whe = 3 Then
                    ' 写入你的业务逻辑代码
                End If
            End If
        Next j
    Next i
End Sub

额外说明

  1. 原代码中lrow未声明类型,建议声明为Long(Excel行数上限远大于Integer的32767),避免溢出错误。
  2. 若坚持要用Evaluate,需确保返回值为有效数字,可增加错误判断:
Dim evalResult As Variant
evalResult = Evaluate("=COLUMN(" & Cells(i, j).Address & ")")
If IsNumeric(evalResult) Then
    whe = evalResult
End If

但这种写法完全没必要,优先使用Column属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:56:00