基础Excel VBA课程&对象

时间:2018-05-31 19:08:53

标签: excel vba excel-vba

有一些我不理解的东西,我猜它一定是非常基本的。

有人可以如此友好地向我解释类和对象之间的关系,以便我能够理解下面发生的事情吗? 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]

1 个答案:

答案 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窗口在您正在使用的上下文中显示的内容。