Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA中的Application.Windows()和Excel.Windows()之间有什么区别?_Excel_Vba - Fatal编程技术网

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

Excel VBA中的Application.Windows()和Excel.Windows()之间有什么区别?,excel,vba,Excel,Vba,基本上,我应该何时使用Application.Windows()以及何时使用Excel.Windows()?任何代码示例都更可取。Excel.Windows()允许您对其进行写入[1],而根据文档,Application.Windows()是只读的[2] 除了应用程序版本的只读区别之外,它们是相同的。因此,如果您只是在读取属性,请使用应用程序版本,如果您需要更改某些内容,请使用Excel版本。Excel库中有名为Windows和Application的类。然后Excel.Windows是类Win

基本上,我应该何时使用Application.Windows()以及何时使用Excel.Windows()?任何代码示例都更可取。

Excel.Windows()
允许您对其进行写入[1],而根据文档,
Application.Windows()
是只读的[2]


除了
应用程序
版本的只读区别之外,它们是相同的。因此,如果您只是在读取属性,请使用应用程序版本,如果您需要更改某些内容,请使用
Excel
版本。

Excel
库中有名为
Windows
Application
的类。然后
Excel.Windows
是类
Windows
的完全限定名。类
Application
具有名为
Windows
的属性,该属性返回所有工作簿中的窗口集合

因此,当您要引用类
Windows
时,可以使用
Excel.Windows
,当您要引用Windows对象时,可以使用
Application.Windows
属性。嗯

在对象浏览器中,我们可以看到它:


命名有问题。类
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
是相同的,因为许多返回最常见对象的属性和方法都可以在不使用
应用程序
对象限定符的情况下使用。可以在没有应用程序对象限定符的情况下使用的属性和方法被视为
global
,对于
Windows
也是如此

总之:

  • 当声明类型为
    Excel.Windows
    的变量时,如果将完全限定名(例如
    Dim wnds)作为Excel.Windows
    ,则不会犯任何错误

  • 当提及窗口对象的集合时,由您选择哪种方式,以下所有内容都是等效的(返回相同的集合)
    Set eaw=Excel.Application.Windows
    Set aw=Application.Windows
    Set ew=Excel.Windows
    。注意:根据my Excel 2007的对象浏览器,此集合是只读的


也许和也许有什么区别?我会说Excel.Windows和Application.Windows是一样的。@Jeeped我想是吧?老实说,我不是百分之百确定,坦率地说,我认为这并不重要。VBA有点乱,我试着写出完成任务所需的最小数量。背景主要是服务器端的web,但整个夏天都在做VBA的事情。@AdamLeBlanc:很抱歉插手你们两人之间,但你为什么认为VBA是一团糟?@SiddharthRout它只是缺少我已经习惯的其他语言的许多功能,而且做的事情也与大多数其他语言非常不同。我觉得微软最好让你使用c#或其他.NET语言来编写应用程序脚本,因为这些语言的编写方式更标准。Visual Basic对于非程序员来说有很多易于使用的东西,这对于开发人员来说有点令人沮丧。@AdamLeBlanc:我主要使用Visual Basic。VB.Net/VB6/VBA/VBScript。我已经在VBA工作了15年多,所以相信我,当我说VBA不是一团糟的时候:)。如果您知道自己必须做什么,那么使用MS Office应用程序从来没有像现在这样容易
。尝试从
.Net
自动化Office。如果你是一个网络新手,你将面临地狱自动化它。VBA for MAC就是我所说的“一团糟”
…主要是因为事情没有按我期望的方式运行而感到沮丧…
,因此我在之前的评论
…如果你知道你今天要做什么…
如果我使用服务器和web,当事情不顺利的时候,我一定要面对挫折,但这并不意味着事情一团糟。偶尔我会遇到一些人,他们会说“VBA一团糟”(无意冒犯),但这真的让我很生气……)