有一些我不理解的东西,我猜它一定是非常基本的。
有人可以如此友好地向我解释类和对象之间的关系,以便我能够理解下面发生的事情吗? Location和Name都是数据透视表类和返回字符串的属性。 为什么第一个语句有效,但最后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]
答案 0 :(得分:-1)
某些对象具有在每个版本或每种情况下都不可用的属性或方法。看似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
窗口在您正在使用的上下文中显示的内容。