在VBA中是否可以将无效公式写入范围?

问题描述 投票:1回答:5

我在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

第二次写入包含无效的公式并导致运行时异常:

enter image description here

enter image description here

有没有办法禁用错误检查,以便第二次写入成功?

excel vba excel-vba runtime-error
5个回答
1
投票

不,您不能绕过错误控制并编写错误的公式,但您可以将公式更改为文本并编写文本。这将使您有机会在将修改应用于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

1
投票

有点棘手,但你可以把你的'错误'公式写成一个单元格中的字符串,然后,在另一个单元格中,使用隐藏的evaluate函数(参见https://stackoverflow.com/a/4472470/78522


1
投票

好吧,厚脸皮的回答。

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

0
投票

第二个公式是错误的语法,= Round(number,num_digits)所以它抛出一个错误。删除或更正它。谢谢。


-1
投票

如果要避免第二行的错误,则使用“On Error Resume Next”语句。第一个声明将成功。

© www.soinside.com 2019 - 2024. All rights reserved.