Excel VBA中的Application.Windows()和Excel.Windows()有什么区别?
基本上,什么时候应该使用Application.Windows(),什么时候应该使用Excel.Windows()? 任何代码示例将是特别优选的。
Excel.Windows()
允许您写入它[1],而Application.Windows()
是只读的[2]。 [1] , [2] 。
除了Application
版本的只读区别之外,它们是相同的。 所以,如果你只是阅读属性,使用应用程序版本,如果你需要改变的东西,使用Excel
版本。
Excel
库具有名为Windows
和Application
类。 然后, Excel.Windows
是Windows
类的完全限定名称。 类Application
具有名为Windows
属性 ,该属性返回所有工作簿中窗口的集合。
所以你可以使用Excel.Windows
当你想引用一个类Windows
并且当你想引用windows对象时你将使用Application.Windows
属性 。 HTH。
在对象浏览器中,我们可以看到它:
命名有问题。 类Windows
的名称和属性Windows
是相同的。 以下所有代码示例都使用Windows
属性引用相同的窗口对象集合:
Dim eaw As Excel.Windows Dim aw As Excel.Windows Dim ew As Excel.Windows Set eaw = Excel.Application.Windows Set aw = Application.Windows Set ew = Excel.Windows
代码Set aw = Application.Windows
和Set ew = Excel.Windows
是相同的,因为许多返回最常见对象的属性和方法都可以在没有Application
对象限定符的情况下使用。 可以在没有Application对象限定符的情况下使用的属性和方法被认为是global
的, Windows
也是如此。
综上所述:
-
当声明一个
Excel.Windows
types的variables时,当你使用完全限定的名字时,你不会犯任何错误,比如Dim wnds As Excel.Windows
。 -
当引用窗口对象的集合时,取决于你select哪种方式,以下所有方法是等价的(返回相同的集合)
Set eaw = Excel.Application.Windows
,Set aw = Application.Windows
,Set ew = Excel.Windows
。 注意:根据我的Excel 2007的对象浏览器,这个集合是read-only
。