我在VBA宏中有以下代码:
Option Explicit
Sub WriteFormula()
Dim rng As Range
Set rng = Range("A1:B2")
' Works
rng.Formula = "=ROUNDUP(1, 1)"
' Doesn't work
rng.Formula = "=ROUNDUP(1)"
End Sub
第二次写入包含无效的公式并导致运行时异常:
有没有办法禁用错误检查,以便第二次写入成功?
不,您不能绕过错误控制并编写错误的公式,但您可以将公式更改为文本并编写文本。这将使您有机会在将修改应用于VBA代码之前查看尝试写入的内容并在工作表上进行更正。
Option Explicit
Sub WriteFormula()
Dim str As String
Dim rng As Range
Set rng = Range("A1:B2")
On Error GoTo forceWriteText
' Doesn't work
str = "=ROUNDUP(1)"
rng.Formula = str
Exit Sub
forceWriteText:
rng.Value = Chr(39) & str
End Sub
有点棘手,但你可以把你的'错误'公式写成一个单元格中的字符串,然后,在另一个单元格中,使用隐藏的evaluate
函数(参见https://stackoverflow.com/a/4472470/78522)
好吧,厚脸皮的回答。
Option Explicit
Sub WriteFormula()
Dim rng As Range
Set rng = Range("A1:B2")
' Works
rng.Formula = "=ROUNDUP(1, 1)"
' Doesn't work
rng = "'=ROUNDUP(1)"
End Sub
第二个公式是错误的语法,= Round(number,num_digits)所以它抛出一个错误。删除或更正它。谢谢。
如果要避免第二行的错误,则使用“On Error Resume Next”语句。第一个声明将成功。