vba - 基础 Excel VBA 类和对象

标签 vba excel

有些东西我不明白,我想它一定很基本。

有人可以向我解释类和对象之间的关系,以便我能理解下面发生的事情吗?
位置和名称都是数据透视表类的属性并返回字符串。
为什么第一条语句有效,但最后 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/

相关文章:

excel - java.lang.NoClassDefFoundError : org/apache/poi/ss/usermodel/Workbook

excel - 使用 filesystemobject 检查文件是否存在

excel - 是否可以说查看输入框文本中A3单元格的值?

html - VBA:从HTML表格中的TD的innerhtml中提取href的有效方法

python - Pandas df.to_excel 用于多个 dfs?

xml - 在 Excel 中使用 XML

javascript - 将 javascript 表导出到 Excel 或控制台表

vba - Excel 宏 : Last non-empty cell in a column

vba - 如何从链接到另一个工作簿的链接中删除链接

regex - VBA 6 : regex not recognizing complicated string