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

可正常运行的VBA代码在编辑器执行时报-2147352571(80020005)错误如何解决

VBA报错问题解决

报错根因

你遇到的报错属于正常开发场景的调试类报错,完全不影响终端用户点击按钮使用:
Application.Caller 仅在宏被工作表内的触发对象(你插入的内置图标、按钮、形状等)调用时,才会返回触发对象的名称。直接在VBA编辑器中手动运行宏时,没有对应的工作表调用来源,Application.Caller 会返回错误值,此时将它作为参数去查找Shapes集合就会触发类型不匹配错误,对应报错号run-time error '-2147352571 (80020005)'。

修复方案

如果需要避免编辑器调试时报错,可以给代码加一层调用来源判断,修改后代码如下:

Sub Name_of_code ()
    Dim b As Object, cs As Integer
    ' 先判断是否为工作表对象触发调用
    If TypeName(Application.Caller) = "String" Then
        Set b = ActiveSheet.Shapes(Application.Caller)
        With b.TopLeftCell.EntireRow.Offset(-2, 0)
            .Insert
            .Cells(1, 2).Copy .Cells(0, 2)
            .Cells(1, 3).Copy .Cells(0, 3)
            .Cells(1, 4).Copy .Cells(0, 4)
        End With
    End If
End Sub

如果需要在编辑器中调试逻辑,可以临时指定你插入的图标名称来测试,比如你的图标默认名称是Graphic 1,可以在调试时把Set b那行改成Set b = ActiveSheet.Shapes("Graphic 1"),调试完成后改回原逻辑即可。


内容的提问来源于stack exchange,提问作者Asbjørn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:54:04