excel - 工作代码返回运行时错误“-2147352571 (80020005)”
问题描述
和这里的许多其他人一样,我是 VBA 的新手,试图在我的新工作中做出一些不错的 QOL 改进。
因此,我尝试添加一个按钮来扩展一个小表格(虽然没有格式化为表格)并保留格式和公式。我实际上成功了(至少一点点)并且按钮按预期工作。因此,令我惊讶的是,当我在 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......
。这是调试结果的图片:
我真的无法弄清楚,问题是什么。
请帮我 :)
提前致谢
编辑:我已经意识到我应该澄清它是否是一个交叉帖子,所以:这也是 mrexcel.com 上的一个交叉帖子。(抱歉给您带来不便) https://www.mrexcel.com/board/threads/vba-code-working-but-giving-run-time-error-2147352571-80020005.1184681/#post-5771449
解决方案
你检查过 的值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
推荐阅读
- ios - 在 Swift UI 中停止旋转动画
- android - 无法使用 viewpager 的最后一页上的按钮
- ionic3 - Android Google Playstore Upload Rejection for SMS 权限策略违规问题
- vue.js - 为什么 Vue 的控制 `` 没有处理程序仍然可以在其中输入文本吗?
- c - 无法使用指针获取计数器来计算字符串中的数字、大小写
- python - 为什么我的烧瓶 RESTplus 模型没有注册
- python - 如何在 Windows 中激活我的虚拟环境?
- python - 只用漂亮的汤从谷歌刮取 src 属性
- python - 如何将 Tkinter Sqlite 适配到 Mysql?
- dat.gui - 使用三个 JS 自定义 dat.gui 中的最小值和最大值