在vba中字符串变量可以有两种,一种是可变长度字符串变量,一种是固定长度字符串变量。
其中可变长度字符串变量的定义方式如下:
dim str1 as string
固定长度字符串变量的定义如下:
dim str2 as string *10
其中*10,表示申明str2变量为只能容纳10个字符长度的字符串变量
当定义了一个定长字符串变量时,未赋值以前,默认是以空字符(等于vbNullChar也等于chr(0))填充的,可以通过下面的代码验证。
当将一个超过10个字符长度的字符串赋值给定长字符串变量str2时,系统将自动截取前10个字符保存。
如下代码所示:
Sub QQ1722187970() Dim str1 As String Dim str2 As String * 10 str1 = "asfdasdfas我撒旦法双方都" str2 = str1 MsgBox str2 End Sub
str2变量的值实际为str1变量的前10个字符,也就是”asfdasdfas”。
当将一个小于10字符长度的字符串赋值给定长字符串变量str2时,系统将前面的字符填充具体的字符串,其余的以空格字符存储。可以通过以下的代码验证:
Sub QQ1722187970() '定义一个存储10个字符的字符串变量str1,1个字符用2个字节存储 Dim str1 As String * 10 Dim arr(19) As Byte '取实际的20个字节看未赋值前变量str1的存储情况 CopyMemory VarPtr(arr(0)), StrPtr(str1), 20 str1 = "adsf" '取实际的20个字节看赋值后变量str1的存储情况 CopyMemory VarPtr(arr(0)), StrPtr(str1), 20 End Sub
通过监视arr数组变量,可以看到前8个字节分别存储了字符”a”、”d”、”s”、“f”,后面的12个字节存储的都是空格字符。
发表评论