在VBA过程中,我们经常遇到关键字New,通常是在实例化对现有对象实例的对象引用时。但是,在一些实例化中,我们使用关键字New,而在其他实例化中,我们不使用关键字,例如:
Dim T As Excel.Workbook
Set T = Application.Workbooks(Bk)
在上面的示例1中,使用了"New"关键字有而不是
Dim fso As FileSystemObject
Set fso = New FileSystemObject
在上面的示例2中,使用了New关键字
为什么要这样?记住,我是新的船在VBA,但我会尽我最大的努力去理解!
此外,在声明对象引用时使用/不使用时,我也会感到困惑,例如:
Dim WS As Worksheet
在上面的示例1中,使用了"New"关键字有而不是
Dim myClassModule As New cl_ChartEvents
在上面的示例2中,使用了New关键字
微软的帮助什么都没告诉我..。
关键字,该关键字支持隐式创建对象。如果在声明对象变量时使用New,则会在第一次引用对象时创建对象的新实例,因此不必使用Set语句来分配对象引用。
Gratz2u
亲爱的人,只是最后的灰尘,为了深入的理解。
Dim WS as Worksheet
Set WS = Worksheets("Sheet1")
在这里,我们创建了一个已经存在的对象,以便打开MS (例如,在“默认模式”中),当然是Sheet1。既然New 存在,并且关键字是不存在的,那么我们如何立即在一行中实例化这个对象呢?
4 @exantas
对不起,没有足够的代表贴出图片:
发布于 2014-02-08 23:05:55
您说过:“我们通常在实例化对象引用到现有对象实例时遇到关键字New”。事实正好相反:当某些东西还不存在时,就会使用New,而您想要创建它,那么“新的”。
如果某个东西已经存在,您可以省略New关键字,例如VBA中的Application、ActiveWorkbook对象和其他对象,即启动Excel时已经打开的所有内容。
Dim ... As New ...是
Dim ... As ...
Set ... = New ...对于创建新工作表的最后一个问题,它是通过
Dim WS As Worksheet
Set WS = Sheets.Add
WS.Name = "My new worksheet"您不能使用Dim WS as New Worksheet,因为微软阻止您这样做。即使在该指令中指定了New,该对象仍然是Nothing。
https://stackoverflow.com/questions/21652671
复制相似问题