请解释Excel的VBA语句
答案:4 悬赏:30 手机版
解决时间 2021-11-19 21:06
- 提问者网友:精神病院里
- 2021-11-19 04:23
请解释Excel的VBA语句
最佳答案
- 五星知识达人网友:渊鱼
- 2021-11-19 05:21
VBA 是基于Visual Basic 发展而来的,它们具有相似的语言结构.
- VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化
VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.
3要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的父应用程序,例如EXCEL.
尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识.
全部回答
- 1楼网友:梦中风几里
- 2021-11-19 09:54
Dim d as New Dictionary,这句话等效于下面两句:
Dim d as Dictionary
Set d = New Dictionary
表示声明了一个Dictionary类型的对象型变量,并且创建了一个Dictionary对象的实例,可以通过d这个变量来操控。
Set d = CreateObject("Scripting.Dictionary"),如果这句话出现在Dim d as New Dictionary后面,那么其实做了两件事。
首先,在Dim d as New Dictionary这句话里面创建的Dictionary对象不再指派到变量d上,至于这个对象现在处境如何,我们完全交给VBA来安排,不管。
其次,通过CreateObject函数创建了一个Scripting类型库下的Dictionary类,然后让d来操控这个类。
需要指出的是,这段代码写的是有问题的。因为在执行了CreateObject函数后,第一句话中创建的Dictionary类完全失去了作用,变成了一个游荡者的幽灵,你没办法重新让这个类绑定到变量上,又没办法完全消除这个类,只能指望着VBA本身来接受这个烂摊子。也就是说,这两句代码导致了多余对象实例的创建。
不过,更复杂的是,你现在有两个版本的Office,就有两个版本的VBA,他们对于这种不符合规范的代码如何处理,我没有了解过,显然,他们的处理方式不一样。
在VBA中,(VB6一样),通常都不建议采用Dim var as New Class的方式,因为很难调试、控制。正规路子是:
Dim var as Class
Set var = New Class
最后那句 Set d = Nothing,表明在内存中释放这个类的实例,这样的话这个被创建并且绑定到d上的类实例就完全清除了,这是写代码的好习惯,甚至说是一种必须,一般不要删除。否则这个实例就又变成了幽灵,只能指望着VBA自己来处理了。
我建议你作如下尝试:
先尝试如下方法:
Dim d as Dictionary
Set d = New Dictionary
如果不行,尝试:
Dim d as Dictionary
Set d= CreateObject("Scripting.Dictionary")
还是不行,尝试:
Dim d as Object
Set d= CreateObject("Scripting.Dictionary")
其中最后一种方法在调试上很麻烦,尤其是当Dictionary出现错误时,不知道具体是什么错误,因此尽量不要使用。追问感谢答了这么多,只是我应该选取最需要的东西。见谅!
Dim d as Dictionary
Set d = New Dictionary
表示声明了一个Dictionary类型的对象型变量,并且创建了一个Dictionary对象的实例,可以通过d这个变量来操控。
Set d = CreateObject("Scripting.Dictionary"),如果这句话出现在Dim d as New Dictionary后面,那么其实做了两件事。
首先,在Dim d as New Dictionary这句话里面创建的Dictionary对象不再指派到变量d上,至于这个对象现在处境如何,我们完全交给VBA来安排,不管。
其次,通过CreateObject函数创建了一个Scripting类型库下的Dictionary类,然后让d来操控这个类。
需要指出的是,这段代码写的是有问题的。因为在执行了CreateObject函数后,第一句话中创建的Dictionary类完全失去了作用,变成了一个游荡者的幽灵,你没办法重新让这个类绑定到变量上,又没办法完全消除这个类,只能指望着VBA本身来接受这个烂摊子。也就是说,这两句代码导致了多余对象实例的创建。
不过,更复杂的是,你现在有两个版本的Office,就有两个版本的VBA,他们对于这种不符合规范的代码如何处理,我没有了解过,显然,他们的处理方式不一样。
在VBA中,(VB6一样),通常都不建议采用Dim var as New Class的方式,因为很难调试、控制。正规路子是:
Dim var as Class
Set var = New Class
最后那句 Set d = Nothing,表明在内存中释放这个类的实例,这样的话这个被创建并且绑定到d上的类实例就完全清除了,这是写代码的好习惯,甚至说是一种必须,一般不要删除。否则这个实例就又变成了幽灵,只能指望着VBA自己来处理了。
我建议你作如下尝试:
先尝试如下方法:
Dim d as Dictionary
Set d = New Dictionary
如果不行,尝试:
Dim d as Dictionary
Set d= CreateObject("Scripting.Dictionary")
还是不行,尝试:
Dim d as Object
Set d= CreateObject("Scripting.Dictionary")
其中最后一种方法在调试上很麻烦,尤其是当Dictionary出现错误时,不知道具体是什么错误,因此尽量不要使用。追问感谢答了这么多,只是我应该选取最需要的东西。见谅!
- 2楼网友:青灯有味
- 2021-11-19 08:22
Set d = CreateObject("Scripting.Dictionary") 创建字典对象
和Dim d As New Dictionary 是一样的,但是后者需要绑定对象才可以用
也就是dim 这句可以删除
set d=nothing 这句是清空字典对象!追问谢谢解答!
和Dim d As New Dictionary 是一样的,但是后者需要绑定对象才可以用
也就是dim 这句可以删除
set d=nothing 这句是清空字典对象!追问谢谢解答!
- 3楼网友:不想翻身的咸鱼
- 2021-11-19 06:45
Dim d As New Dictionary
定义一个字典对象变量D,需要加载引用对象,如出错是字典对象没有引用 到原因
以及 Set d = CreateObject("Scripting.Dictionary") ,
定义变量D为字典对象,如没自动引用加载字典对象,并赋空值。
结尾有一句 Set d = Nothing ,
字典用完,清空变量D。如果字典的数据量大,一定要用这个,否则电脑速度下降。
定义一个字典对象变量D,需要加载引用对象,如出错是字典对象没有引用 到原因
以及 Set d = CreateObject("Scripting.Dictionary") ,
定义变量D为字典对象,如没自动引用加载字典对象,并赋空值。
结尾有一句 Set d = Nothing ,
字典用完,清空变量D。如果字典的数据量大,一定要用这个,否则电脑速度下降。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯