Information模块
Information模块将运行时查询值状态的独立过程组合在一起——子类型、是否已初始化、是否提供了可选参数——以及相关的用于查询数组边界、构建Variant数组、获取原始地址、分解颜色值和获取当前运行时错误状态的工具。
检查值
Is...系列函数测试表达式是否具有特定状态或子类型,返回Boolean:IsArray、IsArrayInitialized、IsDate、IsEmpty、IsError、IsMissing、IsNull、IsNumeric和IsObject。要获取更丰富的查询,VarType返回标识Variant子类型的VbVarType枚举值,TypeName返回其名称作为String。
Dim v As Variant
v = "1/1/2000"
Debug.Print IsDate(v) ' True
Debug.Print VarType(v) ' 8 (vbString)
Debug.Print TypeName(v) ' "String"数组边界
LBound和UBound返回数组指定维度的最小和最大有效下标。使用单个参数时报告第一维;传入显式的Dimension索引可查询多维数组。
Dim Grid(1 To 4, 0 To 9) As Long
Debug.Print LBound(Grid) ' 1 — first dimension lower bound
Debug.Print UBound(Grid) ' 4 — first dimension upper bound
Debug.Print LBound(Grid, 2) ' 0 — second dimension lower bound
Debug.Print UBound(Grid, 2) ' 9 — second dimension upper bound构建Variant数组
Array从逗号分隔的值列表创建Variant数组;下界遵循源文件的Option Base设置。作为特殊形式,同一名称还兼作解构Property Let,用于将右侧数组解包到左侧的各个变量中。
Dim a As Variant = Array("one", "two", "three")
Dim x As Variant, y As Variant, z As Variant
Array(x, y, z) = a ' destructuring assignment原始指针
三个函数返回用于API调用或非安全互操作的原始地址:ObjPtr用于对象的COM标识,StrPtr用于String的底层缓冲区,VarPtr用于任何变量。结果是一个LongPtr,仅在底层对象、字符串或变量保持活动期间有效——获取指针不会持有自身的引用。要在已知地址读写内存,请将这些与(Default)模块中的GetMem/PutMem系列函数配合使用。
Dim n As Long = &H12345678
Dim Bytes(0 To 3) As Byte
vbaCopyBytes 4, VarPtr(Bytes(0)), VarPtr(n)
Debug.Print Hex(Bytes(0)) ' "78" — little-endian处理颜色值
RGB和RGBA从单独的红、绿、蓝和(可选的)Alpha分量构建32位颜色值;RGB_R、RGB_G、RGB_B和RGBA_A将这些分量提取出来。QBColor返回十六个QuickBASIC颜色索引之一的RGB值,TranslateColor将OLE颜色值(可能引用系统调色板中的条目)转换为普通RGB颜色。
Dim C As Long
C = RGB(255, 100, 150)
Debug.Print RGB_R(C) ' 255
Debug.Print RGB_G(C) ' 100
Debug.Print RGB_B(C) ' 150运行时错误状态
Err返回描述当前运行时错误状态的ErrObject——其编号、描述、来源等。Erl返回引发最近错误的语句的行号(当作为数字标签提供时)。
成员
- Array -- 从逗号分隔的值列表创建Variant数组,或在赋值左侧使用时进行解构
- Erl -- 返回最近运行时错误发生的行号
- Err -- 返回描述当前运行时错误状态的ErrObject
- IMEStatus -- 返回输入法编辑器的状态
- IsArray -- 返回变量是否为数组
- IsArrayInitialized -- 返回数组是否已分配维度
- IsDate -- 返回表达式是否可求值为日期
- IsEmpty -- 返回Variant是否未初始化
- IsError -- 返回表达式是否为错误子类型
- IsMissing -- 返回是否提供了可选参数
- IsNull -- 返回变量是否包含Null值
- IsNumeric -- 返回表达式是否可求值为数字
- IsObject -- 返回变量是否引用对象
- LBound -- 返回数组某一维度的最小有效下标
- ObjPtr -- 返回对象的COM标识地址
- QBColor -- 返回QuickBASIC颜色索引对应的RGB颜色值
- RGB -- 从红、绿、蓝分量构建RGB颜色值
- RGBA -- 从红、绿、蓝和Alpha分量构建RGBA颜色值
- RGBA_A -- 返回RGBA颜色值的Alpha分量
- RGB_B -- 返回RGB颜色值的蓝色分量
- RGB_G -- 返回RGB颜色值的绿色分量
- RGB_R -- 返回RGB颜色值的红色分量
- StrPtr -- 返回String底层缓冲区的地址
- TranslateColor -- 将OLE颜色值转换为普通RGB颜色值
- TypeName -- 返回变量数据类型的名称作为String
- UBound -- 返回数组某一维度的最大有效下标
- VarPtr -- 返回变量的地址
- VarType -- 返回标识变量子类型的VbVarType枚举值