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

Excel VBA:For循环内If语句单元格引用致运行时错误1004求助

解决VBA循环中设置FormulaR1C1时的运行时错误1004

我一眼就瞅出问题所在啦——你在FormulaR1C1的字符串里直接写了R[i]C[1]这种格式,但VBA根本不会自动把变量i解析成对应的行号,这就导致Excel识别不了这个公式,触发了1004的应用程序错误。

问题根源拆解

FormulaR1C1接受的是纯字符串参数,你得把变量i和公式的固定字符串部分拼接起来,而不是直接把变量嵌在字符串里。原代码里的R[i]C[1]会被当成字面量,Excel完全看不懂这种奇怪的单元格引用格式。

修正后的完整代码

这里给你调整好的代码,核心就是用&把变量i插入到公式字符串中:

Sub ifcheck()
    Dim i As Integer
    For i = 1 To 5
        ' 直接赋值公式,跳过Select操作,既高效又避免意外问题
        Cells(3, 2).FormulaR1C1 = _
            "=IF(AND(Availability!R3C2>=Interviewers!R" & i & "C[1],Availability!R3C1>=Interviewers!R" & i & "C[3]),Interviewers!R4C2,"""")"
    Next i
End Sub

额外小建议

  • 尽量别用Select和ActiveCell,直接操作单元格对象不仅运行更快,还能避免因手动选中其他单元格导致的错误。
  • 如果你的循环是要给不同行/列的单元格设置公式(比如每轮循环对应不同的目标单元格),可以把Cells(3, 2)改成Cells(i, 2)这类动态引用,适配你的实际需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:52:21