工作代码返回运行时错误"-2147352571 (80020005)"



和这里的许多人一样,我是VBA的新手,想在新工作中改善一些生活质量。

因此,我尝试添加一个按钮来扩展一个小表格(没有格式化为表格),并保持格式和公式。我实际上成功了(至少是一点点),按钮按预期工作。因此,令我惊讶的是,当我在VBA编辑器中运行代码时,它给了我'运行时错误'-2147352571 (80020005)'">

你可能会理解我不喜欢这样,并希望在将电子表格发送给预期用户之前解决这个问题。

我的代码如下:
Sub Name_of_code ()
Dim b As Object, cs As Integer
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 Sub

这个表是这样的。这是一个用来显示采购订单的小桌子。作为触发器的对象只是从excel图标中插入的一个图标。

输入图片描述

在第3行出现错误("Set b = ActiveSheet......)。下面是调试结果的图片:

输入图片描述

我实在想不出是什么问题

请帮帮我:)

Thanks in advance

编辑:我已经意识到我应该澄清这是否是一个交叉帖子:这也是mrexcel.com上的一个交叉帖子。(不便之处,敬请原谅)https://www.mrexcel.com/board/threads/vba代码——工作——但-给-运行时间错误- 2147352571 - 80020005.1184681 -/# post - 2147352571

检查Application.Caller的值了吗?由于它是由图标触发的,它可能不会返回形状的名称,因此ActiveSheet.Shapes()不能返回Shape对象。试试这个:

Dim b As Shape, cs As Integer, callingShape As String
On Error Goto ErrHandler
callingShape = Application.Caller
Debug.Print "Application.Caller: "; callingShape
If callingShape = "<Insert right name here>" 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

Else
MsgBox callingShape & " doesn't appear to be a Shape."
End If
ErrExit:
On Error Goto 0
Exit Sub
ErrHandler:
MsgBox "Error # " & CStr(Err.Number) & ", " & Err.Description & " occured."
Err.Clear
Resume ErrExit

最新更新