分享

【变量到底需要声明吗?】VBA新手答疑

 VBA说 2020-04-07

很多新手纠结于是否声明变量,有的人会告诉你,『一定要养成声明变量类型的好习惯』,也有的人会告诉你,『声明不声明其实在很多时候无所谓』

那么到底是否需要声明变量类型呢?

关于是否在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,完全可以先实战后深入,不必花费太多时间再如何声明好变量类型上,能事半功倍。抛开一些没必要的东西先让程序跑起的确更重要。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多