VBA中Dim语句同行使用=赋值时提示“Expected End of Statement”错误
解决VBA中“Expected End of Statement”数组声明错误
这个问题我太熟了!你写的代码其实是VB.NET的数组简化声明语法,但VBA并不支持这种写法——这就是编译器在=符号处报错的核心原因。
下面给你几种VBA里正确的数组声明&初始化方式:
静态固定大小数组(分步赋值)
如果提前知道数组的元素数量,可以先定义数组大小,再逐个赋值:Dim doubles(3) As Double ' 索引范围0到3,对应4个元素 doubles(0) = 1.5 doubles(1) = 2 doubles(2) = 9.9 doubles(3) = 18动态数组(一步初始化)
要是想直接一次性初始化所有元素,VBA需要借助Array函数,分两种场景:- 变体类型数组(最简便)
Dim doubles As Variant doubles = Array(1.5, 2, 9.9, 18) - 严格Double类型数组(类型安全)
Dim doubles() As Double doubles = Array(1.5, 2, 9.9, 18) ' 只要Array里的元素都是数值,VBA会自动转换为Double类型数组
- 变体类型数组(最简便)
⚠️ 注意:如果是在模块级别(所有过程之外)声明数组,不能直接用Array函数初始化,必须把赋值逻辑放到Sub/Function过程里执行。
内容的提问来源于stack exchange,提问作者Roland
相关产品推荐
相关产品推荐

