gpt4 book ai didi

excel - VBA:如何将图形声明为对象

转载 作者:行者123 更新时间:2023-12-04 21:09:44 25 4
gpt4 key购买 nike

在名为 sheet1 的工作表中,有一个图名为 graph1 .该图是使用名称框命名的。我想将它声明为一个对象,以便以后可以复制和粘贴它。我有以下代码:

Sub dumb()

Dim tot_cap As Object

Set tot_cap = ThisWorkbook.Sheets("sheet1").Object("graph1")

End Sub
上面的代码导致以下错误消息:
run time error 438: object doesn't support this property or method
如何在 VBA 中正确声明命名图形对象?

最佳答案

BigBen's answer是正确的,但会给您带来完全相同的潜在问题。
错误 438 只能在后期绑定(bind)代码上引发。在这里,后期绑定(bind)是偶然的。ThisWorkbook.Sheets产生 Sheets对象,它是各种类型的工作表对象的集合。到目前为止,一切都很好。问题是,Sheets.Item (隐式调用的默认成员)正在产生 Object , 因为工作表对象有很多种,.Item如果它试图返回 Worksheet 将不可避免地爆炸每次都反对。
但是你知道ThisWorkbook.Sheets("Sheet1")Worksheet目的。所以你可以告诉编译器你知道,通过提取一个局部变量——更好的是,从 Worksheets 中取消引用它。收集,为清楚起见:

Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets("Sheets1")
现在,当您针对 sheet 进行成员(member)调用时对象变量,您将获得编译器帮助,当您键入 .点运算符,您会看到 Worksheet没有 Object属性 - 您会很快找到它的 ChartObjects内联自动完成下拉列表中的属性,现在编写成员调用不再像魔法咒语了。
Rubberduck具有可以为您定位隐式后期绑定(bind)的代码检查,如果 Sheet1在编译时存在于 ThisWorkbook它还将 recommend to leverage the sheet's code name (它可以自动为您进行此更改)。

关于excel - VBA:如何将图形声明为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67437209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com