有些东西我不明白,我想它一定很基本。
有人可以向我解释类和对象之间的关系,以便我能理解下面发生的事情吗?
位置和名称都是数据透视表类的属性并返回字符串。
为什么第一条语句有效,但最后 4 条给出了错误
“对象不支持此操作(错误 445)”?
?ActiveWorkbook.ActiveSheet.PivotTables.Count
3
?ActiveWorkbook.ActiveSheet.PivotTables(1).Name
PivotTable12
?ActiveWorkbook.ActiveSheet.PivotTables(2).Name
PivotTable3
?ActiveWorkbook.ActiveSheet.PivotTables(3).Name
PivotTable2
?ActiveSheet.PivotTables(1).Location
?ActiveSheet.PivotTables(2).Location
?ActiveSheet.PivotTables(3).Location
?ActiveSheet.PivotTables("PivotTable12").Location
[Location Def][1]
[Immediate Window][2]
[Error][3]
最佳答案
某些对象具有并非在每个版本或每种情况下都可用的属性或方法。似乎 VBA 中的大多数任务都可以通过多种方式完成。对此,重要的是要乐于寻找“完成同一件事的替代方法”。
在这种情况下,我的下一步是通过 Set
检查在我的场景中哪些属性/方法可用于我的对象。将其设置为变量:
Dim p As PivotTable
Set p = ActiveSheet.PivotTables(1)
Stop
运行该代码,当执行中断时
Stop
, 双击变量 p
要选择它,右键单击它,单击 Add Watch...
并点击 OK
.这将打开
Watches
.使用 ⊞ 打开并浏览树以查看在此上下文中可用的内容。Location
可能会说“应用程序定义的错误...”但是也许您可以找到以下位置:?p.DataBodyRange.Cells.Address
或者
?p.DataLabelRange.Cells.Address
...看看
Watches
窗口在您使用的上下文中显示为可用。
关于vba - 基础 Excel VBA 类和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50631226/