Cod*_*odo 7 excel vba excel-vba
在VBA过程中,我们通常会在对现有对象实例的对象引用进行实例化时不断满足关键字New.但在某些实例中,我们使用关键字New,而在其他实例中,我们不使用例如:
Dim T As Excel.Workbook
Set T = Application.Workbooks(Bk)
在上面的示例No.1中,未使用"新"关键字
Dim fso As FileSystemObject
Set fso = New FileSystemObject
在上面的例子2号的新的关键字被正在使用
为什么?请记住,我是VBA的新船,但我会尽我所能去理解!
除此之外,我在使用/不用于声明对象引用时也会感到困惑,例如:
Dim WS As Worksheet
在上面的示例No.1中,未使用"新"关键字
Dim myClassModule As New cl_ChartEvents
在上面的例子2号的新的关键字被正在使用
微软帮助只是告诉我什么......
允许隐式创建对象的关键字.如果在声明对象变量时使用New,则在首次引用该对象时会创建该对象的新实例,因此您不必使用Set语句来分配对象引用.
Gratz2u
亲爱的人们,这是最后一次了解深刻理解
Dim WS as Worksheet
Set WS = Worksheets("Sheet1")
就在这里,我们正在创建一个已经存在的对象,以便打开MS Excel(当然,以"默认模式"为例)当然是Sheet1.既然它存在且New
关键字是不可能的,我们怎么能立即在一行中实例化这个对象?
4 @exantas
对不起说没有足够的代表发布pic :-(
nag*_*ben 12
当您对变量进行Dim时,您将指定它将保留的数据类型.在创建时,它的值始终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
Run Code Online (Sandbox Code Playgroud)
...除了一行代码而不是两行代码.这不同之处在于Dim WS As Worksheet
变量是直接初始化的,即myClassModule
设置为新的实例cl_ChartEvents
而不是Nothing
.
希望这可以帮助!
你说:"[我们]通常在对现有对象实例的对象引用实例化时遇到关键字New".正好相反:如果有些地方工作的新使用不还存在,要创建它,以及"新".
New
如果已存在某些内容,则可以省略该关键字,例如VBA中的Application对象,ActiveWorkbook对象和其他内容,即启动Excel时已经打开的所有内容.
Dim ... As New ...
是一个快捷方式
Dim ... As ...
Set ... = New ...
Run Code Online (Sandbox Code Playgroud)
对于您创建新工作表的最后一个问题,它完成了
Dim WS As Worksheet
Set WS = Sheets.Add
WS.Name = "My new worksheet"
Run Code Online (Sandbox Code Playgroud)
您无法使用Dim WS as New Worksheet
,因为Microsoft阻止您这样做.即使您New
在该指令中指定,该对象仍然是Nothing
.
归档时间: |
|
查看次数: |
12755 次 |
最近记录: |