如何检查VBA公式是否正确

我正在创build一个VBmacros,将string值(如“1 + 1”)转换为公式。

Cells(1, 1).Formula = "=" & Cells(1, 1).Value 

但是,如果值string不能计算我有运行时错误“1004”。

我怎样才能确保string将成功转换为公式?

首先构造公式,然后在其上使用Evaluate方法。 如果它不返回一个错误,那么你可以将它添加到单元格。

 Sub tester() Dim f As String f = "1+1" Debug.Print f, IIf(FormulaOK(f), "OK", "not valid") f = "1blah1" Debug.Print f, IIf(FormulaOK(f), "OK", "not valid") End Sub Function FormulaOK(f As String) As Boolean FormulaOK = Not IsError(Application.Evaluate(f)) End Function 

如果您需要对单元格的值进行完全validation,那么正则expression式模式可能只是一个东西 – 这将确保只使用与您想要的模式相匹配的单元格(放置等号可能仍然以不可用的格式在单元格中工作,而您可能想要避免这种情况,因为跟踪更改将很困难)。

可以肯定的是,这应该适用于某些types的运算符(如加号或减号)的数字数据吗?