Excel VBA 命名区域公式触发1004错误排查求助
解决Excel VBA添加命名区域时的1004错误
嘿,我一眼就看出问题出在哪了——你的代码里获取单元格内容的方式错了!
先给你拆解下问题根源:你第三行代码用了.Value来取单元格内容,但当单元格里是那个动态的VERSCHUIVING(对应英文的OFFSET)公式时,.Value返回的是公式计算出来的数组结果,而不是公式本身的文本。但Names.Add的RefersTo参数需要的是有效的引用字符串或者公式文本,直接传数组肯定会触发1004错误。
修复方案
1. 把.Value换成.FormulaLocal
因为你的公式用的是荷兰语的Excel函数(VERSCHUIVING、AANTALARG),所以得用.FormulaLocal来获取本地化的公式文本,而不是.Value。修改第三行代码:
Source_1_Area = Range("MDM_MDM_Tool_List").Find(what:=Source_1_Criteria).Offset(0, 4).FormulaLocal
如果你需要兼容英文环境,也可以用.Formula,但要把公式里的荷兰语函数名换成英文的(OFFSET、COUNTA)。
2. 加上错误处理更稳妥
另外,为了避免Find方法找不到匹配项导致后续代码崩溃,建议加个简单的判断:
Dim foundCell As Range Set foundCell = Range("MDM_MDM_Tool_List").Find(what:=Source_1_Criteria) If Not foundCell Is Nothing Then Source_1_Name = foundCell.Offset(0, 2).Value Source_1_Area = foundCell.Offset(0, 4).FormulaLocal ActiveWorkbook.Names.Add Name:=Source_1_Name, RefersTo:=Source_1_Area Else MsgBox "没找到匹配的""Factuur""项哦!" End If
为啥手动粘贴没问题?
手动粘贴的时候,你复制的是单元格里的公式文本,直接给到命名区域的引用参数,自然能正常工作。但你原来的代码取的是公式算出来的结果(一个数组),这俩完全不是一回事,所以代码就报错啦。
内容的提问来源于stack exchange,提问作者Michiel.D
相关产品推荐
相关产品推荐

