Dav*_*ers 9 excel vba pivot-table excel-vba
获取一个带有数据透视表和一些数据/过滤器的文件:
将以下方法放在"BeforeClose"方法中:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ThisWorkbook.connections(1).Ranges.count
End Sub
Run Code Online (Sandbox Code Playgroud)
现在,如果您关闭此文件(并设置断点),您会注意到注释掉的语句具有以下值:
1
这就像我们所期望的那样,因为我们有一个连接,一个数据透视表,相当直接.现在重复相同的步骤,但是当您关闭文件时,首先打开一个空白的Excel文件,并在最小化时关闭主文件:
现在你得到:
0
现在,这怎么可能?这不是我对这个属性如何工作的理解.我以为"ThisWorkbook"是:
"ThisWorkbook属性更容易理解,因为它只是引用了正在执行VBA代码的Excel工作簿."
我在这里弄错了什么?找到"连接"但是当第二个文件处于活动状态时,范围属性似乎不正确.我最初的意图是确定连接的使用位置.也许我会以错误的方式去做?
哎呀,对于与MsgBox的所有混淆感到遗憾,似乎(在我之前的问题中),MsgBox再次激活窗口并显示1而不是代码中存在的值.但是,如果您在该行上设置了一个断点,您将在窗口变为活动状态之前看到该问题:
所以这个问题仍然存在,我很难以一种容易看到的方式重现这个问题(并且在堆栈溢出时可以传播).也许潜在的解决方法是在关闭之前使当前窗口成为活动窗口.我仍然想了解这种奇怪行为的根本原因.
我已经用这个澄清更新了原始问题,并删除了令人困惑的MsgBox问题.谢谢大家的好收获.
我重现了你的问题。我们可以通过使用来证明它正在查看正确的对象
Debug.Print ThisWorkbook.Connections(1).Parent.Name
Debug.Print ThisWorkbook.Connections(1).Name
Run Code Online (Sandbox Code Playgroud)
然而,当最小化时,计数将变为零。这看起来像一个错误。向微软报告。您可以点击File > Feedback然后寻找皱眉脸来提交反馈。
您还可以在 MS 论坛中发起有关该问题的主题,可以将问题升级给开发人员: https://answers.microsoft.com/en-us
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |