永发信息网

请解释Excel的VBA语句

答案:4  悬赏:30  手机版
解决时间 2021-11-19 21:06
请解释Excel的VBA语句
最佳答案
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创建解决方案的大部分知识.


全部回答
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出现错误时,不知道具体是什么错误,因此尽量不要使用。追问感谢答了这么多,只是我应该选取最需要的东西。见谅!
Set d = CreateObject("Scripting.Dictionary") 创建字典对象

和Dim d As New Dictionary 是一样的,但是后者需要绑定对象才可以用

也就是dim 这句可以删除
set d=nothing 这句是清空字典对象!追问谢谢解答!
Dim d As New Dictionary
定义一个字典对象变量D,需要加载引用对象,如出错是字典对象没有引用 到原因

以及 Set d = CreateObject("Scripting.Dictionary") ,
定义变量D为字典对象,如没自动引用加载字典对象,并赋空值。

结尾有一句 Set d = Nothing ,

字典用完,清空变量D。如果字典的数据量大,一定要用这个,否则电脑速度下降。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大芹菜的做法,大芹菜怎么做好吃,大芹菜的家
泡沫手投飞机怎么玩
求助:AMOS计算时出现的问题
牡丹亭里《闺塾》的"怎辜负的这一弄明窗新降
我是一名黑车司机,你们有什么想问的么
航拍-dji悟pro,谁用过14-42?感觉怎么样
哪里有靠谱的声音测试专家?
黄石有廖排骨卖吗?湖北黄石市区有没有加盟四
申通快递(黑龙江集贤县公司)地址在什么地方,
派派红包怎样才能逃离跟班
如何才能关心到女友?
坵洋村地址有知道的么?有点事想过去!
马里到底怎么了?法国为什么出兵马里啊?马里
忧心是什么意思
上海遇发实业有限公司怎么样?
推荐资讯
步步高手机怎样从省电模式恢复正常
一箱油加满大概多少钱
跃上新高度等我议论文 800字左右 不要雷同的
外国人唐纳德和奥斯丁专用捕蛇工具
有人让我做投资,结果被骗怎么办?
小生现龄二十有三,文毕高中,还未成婚,今寻
我这样持护照可以去香港坐飞机吗?
本科在校成绩可以改吗
坎儿井是新疆最古老的地下取水方式之一,之所
某蓄电池放电、充电的反应式为:Fe+Ni2O3+3H2
彩霞发屋地址在什么地方,我要处理点事!
邻水有什么兼职没有,上一休三实在是太无聊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?