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
相关产品推荐
相关产品推荐

