▋很多新手纠结于是否声明变量,有的人会告诉你,『一定要养成声明变量类型的好习惯』,也有的人会告诉你,『声明不声明其实在很多时候无所谓』
那么到底是否需要声明变量类型呢?
关于是否在VBA程序开头声明变量类型,Excelhome论坛曾经有过很激烈的讨论。看过之后我也深有感触。
■我比较支持“香川裙子”大神的观点:
1、 初学者不必马上去学习定义变量的各种知识,直接写代码照样可以入门。
2、 入门以后再学习定义变量的方法,并根据自己的认识取舍即可。
疑惑一:是否必须在程序开头加上Option Explicit?
作用:Option Explicit 语句在模块级别中使用,强制显式声明模块中的所有变量。
说白了就是,在模块开头加上这句代码以后,如果在下面的代码过程中没有定义变量会提示出错。
不定义变量类型会提示变量未定义
关于对Option Explicit真正意图的解释
香川裙子:在电脑286、386时代,在DOS程序代码时代,在内存仅16M,32M时代,你必须定义好每一个变量的数据类型,以便最高效地进行内存使用。即,一个口袋里只有10元钱的人,要生活一周 → 于是你必须精打细算好每一分钱,否则就会饿死。
Option Explicit 的作用,就在于:
如果你的程序没有做到精确定义每一个变量的数据类型,编译程序就会拒绝执行→它认为你太奢侈了,不懂的节约使用每一分钱。
现在的电脑硬件环境,已经是过去的几千倍了。
每一个人口袋里都有几百万的钱,还有必要去考虑一分钱、一元钱的用法么?
疑惑二:是否需要dim 所有变量?
■先说定义变量的好处:
不同的数据类型,占用大小不同的字节,因此计算时对内存的占用和运算效率有所不同。
因此,定义变量数据类型以后,可能的好处是少占用一些内存以及大量重复运算是提高计算速度。
■再说对于初学者的坏处:
由于各种类型占用字节的限制,它所能代表的数值范围受到了限制!如果初学者试图去使用定义变量类型的方法时,往往尚未得到实际好处,即【运算速度提高】的好处(但实际运算量小时速度的差别很小、很小可以完全忽略不计)
却首先受到了因为不能恰如其份地定义好变量类型,而造成了变量溢出或冲突导致代码无法运行的严重后果。
例如下面这个例子:假如我们要获取下图A列已使用的最后一个单元格
如果不太了解integer的范围,在超出变量范围的情况下使用就会提示出错。
提示“溢出”错误
另外说几点
·动态数组必须定义。
·下面的语句,完全是多余的,没有任何实际意义。
dim arr,dim txt,dim Num无意义
因为 :
dim arr 等价于 dim arr As Variant
dim txt 等价于 dim txt As Variant
dim Num 等价于 dim Num As Variant
最后说一下个人的理解:
学习VBA,完全可以先实战后深入,不必花费太多时间再如何声明好变量类型上,能事半功倍。抛开一些没必要的东西先让程序跑起来的确更重要。
联系客服