由于VBA相对较新,并且根据在该站点上提供的建议,我试图养成在编码时指定数据类型的习惯。我一直在查看以下网页上列出的数据类型,并考虑了可能使用每种数据类型的情况:
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary
但是,我对如何使用Byte
有疑问。在哪种情况下,使用Byte
比其他数据类型更可取?换句话说:0 -255的数据范围什么时候有利?
我对数据类型的了解不是太深,但是绝对对此很好奇!
答案 0 :(得分:5)
对于大多数偶然的事情,即使您要使用的值在Byte
范围内,也不需要Byte
数据类型。
您通常不需要 16位Integer
-每当您在VBA中需要整数类型时,Long
(32位,带符号的整数)是理想的选择,并且当可用内存以 Giga 字节为单位进行测量时,不必担心会消耗比实际更多的字节……在1993年并非完全如此。
经验法则,如果需要整数类型,请使用Long
;现代处理器针对使用32位整数和internally there's no difference whatsoever进行了优化,因此对于适合8位整数的值使用Byte
,对于适合16位整数的值使用Integer
,和Long
表示适合32位整数的值,...实际上只是无用的额外工作,不会节省任何内存。
Byte
是数组中经常使用的低级数据类型,例如对于处理string encodings等有用。
某些标准库函数与Byte
值配合使用效果更好;我想到VBA.Information.RGB
:
虽然函数很乐意使用任何Integer
,但是任何大于255的参数值将以255为上限,因此RGB(1000, 0, 0)
输出255
:将Byte
馈入这样,值才有意义,但仅出于自我说明目的-与内存消耗无关。
答案 1 :(得分:2)
VBA并非专用于Excel。考虑访问(以保留在Office工具中)。
当您计划在表中存储一百万行时,可能需要对某些字段使用Byte
。然后,您可以将Byte
字段读入Byte
变量中。
正如@Matthieu所说,对于Excel来说,它几乎没有价值。
还请记住,And
和Or
是VBA中的按位运算。例如,我已经使用Byte
+按位运算符来检查权限。