首次编写VBA代码新增命名范围触发Run-time error '1004'求助
错误排查与解决方案
核心报错原因
Excel VBA中通过单个字符串参数调用Range()时,参数字符串最大长度限制为255字符,你追加3个TWO开头的命名范围后,拼接的字符串超出了长度上限,因此触发1004报错。
可行修复方案
方案1:使用Union方法拼接范围(推荐)
放弃单字符串拼接的写法,改用Union方法逐个合并命名范围,完全规避长度限制:
Dim inputcells As Range ' 逐组合并命名范围 Set inputcells = Union(Range("INFTargetvalue"), Range("INFsetcell"), Range("INFchangecell")) Set inputcells = Union(inputcells, Range("FXTargetvalue"), Range("FXsetcell"), Range("FXchangecell")) Set inputcells = Union(inputcells, Range("MFOBtargetvalue"), Range("MFOBsetcell"), Range("MFOBchangecell")) Set inputcells = Union(inputcells, Range("CORtargetvalue"), Range("CORsetcell"), Range("CORchangecell")) Set inputcells = Union(inputcells, Range("OPTtargetvalue"), Range("OPTsetcell"), Range("OPTchangecell")) Set inputcells = Union(inputcells, Range("ONEtargetvalue"), Range("ONEsetcell"), Range("ONEchangecell")) Set inputcells = Union(inputcells, Range("TWOtargetvalue"), Range("TWOsetcell"), Range("TWOchangecell"))
附加检查项
- 确认所有命名范围的作用域:如果命名范围是指定工作表的私有范围,调用
Range()时需要带上工作表限定,例如Sheets("配置表").Range("TWOsetcell"),避免隐式调用活动工作表导致找不到范围。 - 调试GoalSeek调用逻辑:执行GoalSeek前可输出
Range("TWOsetcell").Value和Range("TWOchangecell").Value,确认存储的是合法的单元格地址格式。
内容的提问来源于stack exchange,提问作者Gavin
相关产品推荐
相关产品推荐

