实例变量一定要用对象引用来赋值吗

 我来答
j5...4@33sn.cc
2017-04-10 · 贡献了超过109个回答
知道答主
回答量:109
采纳率:0%
帮助的人:10.5万
展开全部
Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]]
以上是dim语句的语法,其中new关键字的解释:
可选的。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。
看过解释再来看你的两个语句:
1、dim xl as new …
此时,VBA提示的内容是你将实例化的对象集合供你选择,效果是创建xl变量,不仅定义变量类别为xxx,而且将它进行实例化,即创建并分配内存把地址赋值给xl这个变量。比如你在工程---引用中把ActiveX Data Objects 2.8 Libray选中,那么你再使用这句语句时,你会发现ADODB已经在你的选择之中。其实这就是前期绑定。
2、dim xl as excel…
此时,VBA提示的内容和前一语句有变化,其实在EXCEL中的VBA,你不需要标识EXCEL,效果一样,也就是说,dim sl as …之后的提示内容和有excel提示内容一致,因为是在默认的EXCEL application之中。效果是创建xl变量,但这时候并没有把这个变量xl进行实际的分配出内存并载入堆栈,这个时候这个变量xl还是未使用的,只是个指向空地址的无用变量。这样的语句需要通过SET语句来实现后期绑定。
最后,对于运行效果来说没什么必要去较真研究区别,因为通过相应的语句,效果完全一样,只是在内存和运行方式上的差别。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式