VBA设置.Formula时触发Run-time error '1004'错误求助
解决VBA设置公式时Run-time error '1004'的问题
问题根源
- AutoFill类型错误:你使用了
xlFillValues参数,这会填充单元格的计算结果而非公式本身。由于L52的公式结果可能为空,导致填充操作无效并触发1004错误。 - 冗余的Select操作:VBA中使用
Select/Selection容易引发上下文错误,直接操作Range对象更稳定。
修正方案
方案1:直接给整个区域设置公式(推荐,更高效)
无需AutoFill,直接将公式批量应用到L52:L64区域,Excel会自动处理相对引用的行号变化:
ActiveSheet.Range("L52:L64").Formula = "=IF(C12="""","""",IF(LEFT($K52,1)*1=8,"""",CHOOSE(LEFT($K52,1),$C52,$D52,$E52,$F52,$G52,$H52,$J52)))"
方案2:修正AutoFill参数并移除Select操作
如果坚持使用AutoFill,将Type改为xlFillFormulas(填充公式而非值),同时去掉不必要的Select:
ActiveSheet.Range("L52").Formula = "=IF(C12="""","""",IF(LEFT($K52,1)*1=8,"""",CHOOSE(LEFT($K52,1),$C52,$D52,$E52,$F52,$G52,$H52,$J52)))" ActiveSheet.Range("L52").AutoFill Destination:=ActiveSheet.Range("L52:L64"), Type:=xlFillFormulas
额外说明
公式中的引号转义是正确的(用两个双引号""表示公式里的一个双引号),手动输入正常说明公式逻辑本身没有问题,错误完全来自VBA的填充操作设置。
内容的提问来源于stack exchange,提问作者Kewle
相关产品推荐
相关产品推荐

