众所周知,虽然VBA支持变量数据类型,给初学者带来了很多便利,但如果真想做出一个安全高效的程序,就必须为每个变量声明一个数据类型。 我在《大家的VBA提高篇》中已经举了很多例子来说明具体原因,这里不再赘述。
最基本的数据类型表示“整数”。 所有教科书都会提到,虽然可以表示的数据范围比较小,但只占用两个字节,而长整型Long则占用四个字节,所以大家肯定会认为(其实在各种教科书中也很常见)目前)参数),如果值在正负32767之间,那么使用Long肯定可以节省一半的内存空间。 而且,由于每次计算调用需要的内存更少,速度自然也就快一些。
虽然大多数教科书还是这样解释的,但我必须负责任地告诉大家:世界就是这样,现在的情况早已不再是这样了。 为什么? 因为很多年前,我们开始使用32位计算机和操作系统(现在64位系统很常见)。 之所以被称为32位系统,是因为它进行计算时,标准字长(可以理解为最小的处理单位)是4个字节(每个字节8位,总共32位)。 所以即使你给它一个2字节的数据,它也会消耗4字节的计算资源来处理。
为此,当前VBA执行我们的代码时,会自动将我们声明为类型(2字节)的变量全部转换为Long类型(4字节)变量,然后进行计算。 因此,可以想象,声明类型并不会节省内存(反正底层会统一为Long),反而会多消耗一点时间(让VBA将其转换为Long)。 所以日常应用中大家就写Long就可以了,基本可以忘记。 除非你像杨老师一样,在286时代开始学习编程,同时又是一个超级怀旧的蒸汽朋克。
不过,杨老师并没有说可以“彻底忘记”,因为极少数情况下我们还是会用到它。 最典型的就是调用一些老的时候,有些参数必须是2字节整数。 这时就需要定义这些API中要传递的参数。 但我相信绝大多数学生都不会遇到这种需求。