You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中数组赋值带/不带括号为什么结果一致且不触发同名Sub?

问题底层原因解答
  • 同名标识符优先级的规则限制
    VBA在解析标识符时默认遵循局部作用域优先的匹配逻辑:你在getArray函数内部已经通过Dim returnArray(1) As Integer声明了一个局部数组变量,该变量的优先级远高于模块层面声明的同名returnArray子过程。因此代码中所有returnArray、returnArray()的写法,都会被VBA识别为局部数组变量,根本不会调用外部的Sub过程,Sub内的MsgBox自然不会触发。

  • 空括号不影响结果的原因
    对于已经声明完成的固定大小数组,VBA语法支持两种完整数组引用方式:直接写数组名、或者数组名后加空括号。此处的空括号不属于过程调用的语法标识,只是数组类型的标记,所以两种写法都是将局部数组的全部内容赋值给函数返回值,得到的结果完全一致。

补充验证:如果需要强制调用外部同名Sub,可添加模块名前缀明确指定调用对象,例如Call Module1.returnArray(),执行时即可触发Sub内的MsgBox。

内容的提问来源于stack exchange,提问作者ldbruin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:45:04