VBA中能否直接为常规数据类型数组整体赋值
VBA常规类型数组的整体赋值规则
VBA原生支持将整个数组直接赋值给Variant类型变量,这个特性最常见的应用场景是单元格区域的批量读写,比如代码varRange = Range("A1:A3").Value就是典型用法,Variant类型的数组赋值示例如下:
Dim varVariable As Variant varVariant = Array("a", "b", "c") Dim arrVariant() As Variant arrVariantVarSize = Array("d", "e", "f")
对于字符串、整型这类常规固定数据类型构成的数组,无法直接通过Array()函数实现同款整体赋值。核心原因是Array()函数的返回值固定为Variant类型数组,和强类型声明的数组类型不匹配,直接赋值会抛出类型不匹配的运行时异常,错误写法示例:
Dim arrString(2) As String arrString = Array("a", "b", "c") ' 运行时抛出类型不匹配异常 Dim arrInteger (2) As Integer arrInteger = Array(1, 2, 3) ' 运行时抛出类型不匹配异常
给强类型数组赋值的通用兼容方案就是逐元素赋值,注意部分流传的逐元素示例存在两处明显错误:一是将整型数组错误声明为String类型,二是给单个元素赋值时错误套用Array()函数(该函数返回数组,和单值类型不匹配,同样会报错),正确的逐元素赋值写法如下:
Dim arrString(2) As String arrString(0) = "a" arrString(1) = "b" arrString(2) = "c" Dim arrInteger(2) As Integer arrInteger(0) = 1 arrInteger(1) = 2 arrInteger(2) = 3
内容的提问来源于stack exchange,提问作者Albin
相关产品推荐
相关产品推荐

