VBA报错「行续接符过多」 长Variant数组拆分行仍报错如何解决
报错原因
- 续行符
_使用不符合规范:VBA要求续行符前必须加空格,后直接跟换行,不允许后面跟逗号、多余空格,也不允许下一行开头加逗号,你示例中_ ,、下一行开头的,1都属于语法错误。 - 连续空逗号会导致VBA语法解析异常,如需占位空值请显式写
Empty。 - 当数组元素超过
Array()函数的参数上限(32位Office最多支持255个参数)时,也会触发报错。
解决方法
方案1:修正续行写法(适用于元素数量未超过Array参数上限的场景)
按照规范调整续行位置,逗号放在上一行元素末尾,续行符紧跟在逗号后,下一行直接接下一个元素,示例:
Dim arr As Variant arr = Array(15, 54, 10, 15, 0, 0, 0, 51, 12, 36, 23, 15, 52, 115, 132, 16, 13, 18, 0, 0, 0, 0, 0, 0, 0, 2, 0, 51, 13, _ 1, 25, 15, 31, 81, 35, 64, 31, 0, 0, 0, 0, 2, 0, 5, 1, 4, 3, 150, 1, 91, 156, 151, 51, 150, 1, 0, 0, 0, _ 12, 34, 56) ' 剩余元素按相同规则补充
方案2:字符串拆分转数组(适用于元素数量多、超过Array参数上限的场景)
先把所有元素拼接为逗号分隔的字符串,再通过Split函数拆分得到数组,该方案没有参数数量限制,续行处理更简单:
Dim arr As Variant Dim strElements As String ' 字符串续行只需要用&连接即可,写法容错率更高 strElements = "15,54,10,15,0,0,0,51,12,36,23,15,52,115,132,16,13,18,0,0,0,0,0,0,0,2,0,51,13," & _ "1,25,15,31,81,35,64,31,0,0,0,0,2,0,5,1,4,3,150,1,91,156,151,51,150,1,0,0,0," & _ "此处补充剩余所有元素" ' 拆分字符串得到字符串类型数组 arr = Split(strElements, ",") ' 如果需要数值类型,遍历转换即可 Dim i As Long For i = LBound(arr) To UBound(arr) arr(i) = CLng(arr(i)) Next
方案3:读取单元格区域赋值(适用于元素数量极大的场景)
如果数组元素是固定常量,可以把所有元素按顺序写入工作表空白区域,直接读取区域值生成数组:
Dim arr As Variant ' 假设元素依次存放在Sheet1的A1:A100单元格,直接赋值得到二维数组 arr = Sheet1.Range("A1:A100").Value ' 如需一维数组,调用转置方法即可 arr = WorksheetFunction.Transpose(arr)
内容的提问来源于stack exchange,提问作者an_1898
相关产品推荐
相关产品推荐

