VBA 中的 IF 条件公式 - 运行时错误'1004'



我在IF语句行得到一个运行时错误'1004'。检查了之前的帖子,但没有找到相关的解决方案。我的代码是

Sub RefreshFormulae()
Set sh = ActiveSheet
lastR = sh.Range("B" & sh.Rows.Count).End(xlUp).Row
sh.Range("$J$3:$K$" & lastR).ClearContents
sh.Range("$H$3:$H$" & lastR).Formula = "=$G3"
sh.Range("$K$3:$K$" & lastR).Formula = "=IF($I3<>""Not Found"";$I3;"""")"
End Sub

错误在下一行。我错过什么了吗?

sh.Range("$K$3:$K$" & lastR).Formula = "=IF($I3<>""Not Found"";$I3;"""")"

您需要在VBA中使用逗号(,)而不是分号(;),因为函数内部分隔符的区域格式仅适用于Excel公式栏界面,而不适用于宏/VBA。

试题:"=IF($I3<>" & Chr(34) & "Not Found"",$I3,"""")"

这将使整个块变成:

Sub RefreshFormulae()
Set sh = ActiveSheet
lastR = sh.Range("B" & sh.Rows.Count).End(xlUp).Row
sh.Range("$J$3:$K$" & lastR).ClearContents
sh.Range("$H$3:$H$" & lastR).Formula = "=$G3"
sh.Range("$K$3:$K$" & lastR).Formula = "=IF($I3<>" & Chr(34) & "Not Found"",$I3,"""")"
End Sub

在VBA中输入公式时,即使在工作表中直接使用分号,也需要使用逗号。

Sub RefreshFormulae()
Set sh = ActiveSheet
lastR = sh.Range("B" & sh.Rows.Count).End(xlUp).Row
sh.Range("$J$3:$K$" & lastR).ClearContents
sh.Range("$H$3:$H$" & lastR).Formula = "=$G3"
sh.Range("$K$3:$K$" & lastR).Formula = "=IF($I3<>""Not Found"",$I3,"""")"
End Sub

最新更新