vba中有各种变量类型,如Byte、Boolean、Integer、Long等。
不同的变量类型,分配的存储内存大小(字节数)是不一样的。
具体的各种vba的变量类型所分配的内存大小可以见官方帮助文档。
比如Byte类型的变量分配的1个字节的存储空间,Long类型的变量分配4个字节的存储空间。
在vba中提供了一个函数可以直接获取不同类型的变量所分配的存储空间,它就是Len函数。
经常使用vba编写代码的肯定都知道Len函数,它一般用于返回字符串变量所包含的字符数。
其实Len函数还有一个作用,就是返回变量所分配的存储空间的大小,以字节为单位。
可以通过以下代码测试:
Sub QQ1722187970() Dim i As Byte Dim j As Boolean Dim k As Integer Dim l As Long Dim m As Date '分别返回i,j,k,l,m 变量所分配的内存存储空间大小 Debug.Print Len(i), Len(j), Len(k), Len(l), Len(m) End Sub
但是对于以下几类特殊的变量类型,Len返回的值不再是变量所占的存储空间大小:
- 对于变长字符串变量,Len返回的是变长字符串变量存储的字符数。
- 对于定长字符串变量,Len返回的是定长的字符数。
- 对于Variant类型的变量,Len函数把它当做是字符串变量一样对待,也是返回存储的字符数。
可以使用以下的代码测试:
Sub QQ1722187970() Dim str1 As String Dim str2 As String * 10 Dim i As Variant '分别返回str1、str2,i变量所含的字符数 Debug.Print Len(str1), Len(str2), Len(i) End Sub
对于用户自定义类型变量,当它的元素是字符串变量或者Variant类型的变量时,Len函数返回的值是这个用户自定义类型变量被写到文件中的大小。
可以用以下代码测试:
Type obj1 i As Long End Type Type obj2 i As Long str1 As String End Type Type obj3 i As Long str1 As String * 10 End Type Type obj4 i As Long str1 As Variant End Type Sub QQ1722187970() Dim o1 As obj1 Dim o2 As obj2 Dim o3 As obj3 Dim o4 As obj4 Debug.Print Len(o1), Len(o2), Len(o3), Len(o4) End Sub
分别输出 4 8 14 20。
发表评论