在 VBA 程序中,我们经常会遇到关键字 New,通常是在对现有对象实例的对象引用实例化时。但在某些实例中,我们使用关键字 New,而在其他实例中,我们不使用关键字,例如:
将 T 调暗为 Excel.Workbook
设置 T = Application.Workbooks(Bk)
在上面的示例 1 中,“New” 关键字未被使用
将 fso 调暗为 FileSystemObject
设置 fso = 新 FileSystemObject
在上面的示例 2 中,New 关键字正在正在使用
为什么呢?请记住,我对 VBA 很陌生,但我会尽力理解!
除此之外,我还会在声明对象引用时使用/不使用时感到困惑:
将 WS 调暗为工作表
在上面的示例 1 中,“New” 关键字未被使用
将 myClassModule 调暗为新的 cl_ChartEvents
在上面的示例 2 中,New 关键字正在正在使用
Microsoft 帮助什么也没告诉我...
允许隐式创建对象的关键字。如果在声明对象变量时使用 New,则会在第一次引用该对象时创建该对象的新实例,因此您不必使用 Set 语句来分配对象引用。
格拉茨2u
亲爱的人们,只是为了深入了解而进行的最后一次除尘
将 WS 调暗为工作表
设置 WS = Worksheets("Sheet1")
在这里,我们正在创建一个已经存在的对象,以便打开 MS Excel(例如,在“默认模式”下),当然是 Sheet1。 既然它存在,并且 New
关键字是不可能的,我们如何才能立即在一行中实例化这个对象?
4 @exantas
抱歉,没有足够的代表来发布图片:-(
最佳答案
当您调暗变量时,您正在指定它将保存的数据类型。在创建时,其值始终为 Nothing
,直到您对其进行初始化。 Set T = Application.Workbook(Bk)
将 T 变量初始化为 Application.Workbook 的特定实例,在本例中为“Bk”。
当您Dim fso as FileSystemObject
时,您基本上是在说fso
将在某个时刻保存一个FileSystemObject
;但是,它的初始值是 Nothing
,直到您使用 Set fso = New FileSystemObject
对其进行初始化。 New
关键字意味着您正在创建一个新对象,而不是像使用 Set T = Application.Workbook(Bk)
另请注意,Set fso = FileSystemObject
将无效,因为它不知道您希望分配给它的 FileSystemObject
实例。这就是为什么您使用 New
关键字创建 FileSystemObject 的新实例。
如前所述,Dim WS As Worksheet
只是告诉编译器您希望变量 WS 保存一个 Worksheet 对象。由于没有指定其他内容,因此在 Dim 点,WS 设置为 Nothing
Dim myClassModule As New cl_ChartEvents
相当于执行以下操作:
Dim myClassModule as cl_ChartEvents
Set myClassModule = New cl_ChartEvents
...除了一行代码而不是两行。这与 Dim WS As Worksheet
不同,因为变量是立即初始化的,即 myClassModule
设置为 cl_ChartEvents
的新实例而不是 什么都没有
。
希望这有帮助!
关于vba - 关键字 'New' 在 VBA 中起什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652671/