Excel VBA中的Application.Windows()和Excel.Windows()有什么区别?

基本上,什么时候应该使用Application.Windows(),什么时候应该使用Excel.Windows()? 任何代码示例将是特别优选的。

Excel.Windows()允许您写入它[1],而Application.Windows()是只读的[2]。 [1] , [2] 。

除了Application版本的只读区别之外,它们是相同的。 所以,如果你只是阅读属性,使用应用程序版本,如果你需要改变的东西,使用Excel版本。

Excel库具有名为WindowsApplication类。 然后, Excel.WindowsWindows类的完全限定名称。 类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.WindowsSet ew = Excel.Windows是相同的,因为许多返回最常见对象的属性和方法都可以在没有Application对象限定符的情况下使用。 可以在没有Application对象限定符的情况下使用的属性和方法被认为是global的, Windows也是如此。

综上所述:

  • 当声明一个Excel.Windowstypes的variables时,当你使用完全限定的名字时,你不会犯任何错误,比如Dim wnds As Excel.Windows

  • 当引用窗口对象的集合时,取决于你select哪种方式,以下所有方法是等价的(返回相同的集合) Set eaw = Excel.Application.WindowsSet aw = Application.WindowsSet ew = Excel.Windows注意:根据我的Excel 2007的对象浏览器,这个集合是read-only