如何将变量拼接至Range快捷语法[ ]中正常使用?
VBA Range 方括号快捷语法拼接变量方案
根本原因
[] 是VBA中 Evaluate 方法的语法糖,仅支持传入静态字面量表达式,无法解析括号内的VBA变量、字符串拼接逻辑。你编写的ActiveSheet.[A2:A & LastRow]会被VBA直接判定为无效的工作表单元格表达式,无法识别LastRow变量,因此抛出「需要对象」的报错。
解决方案
如果需要在动态拼接的场景下达到和方括号语法完全等价的效果,显式调用Evaluate方法即可,和你用Range方法的运行效果完全一致:
ActiveSheet.Evaluate("A2:A" & LastRow).Select
补充说明
- 方括号语法仅适合无变量的静态场景使用,比如
ActiveSheet.[A1:B10].Select这种固定范围的写法,没有动态拼接需求时可以正常使用 Evaluate写法、Range写法、[]静态写法三者在性能上没有差异,可根据编码习惯选择
内容的提问来源于stack exchange,提问作者Leedo
相关产品推荐
相关产品推荐

