我正在创建一个VB宏,它将字符串值(如“1 + 1”)转换为公式。
Cells(1, 1).Formula = "=" & Cells(1, 1).Value
但是如果无法计算值字符串,我有运行时错误'1004'。
我怎样才能确定字符串是否会成功转换为公式?
答案 0 :(得分:6)
首先构造公式,然后对其使用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
答案 1 :(得分:0)
如果你需要对单元格的值进行完全验证,那么正则表达式可能就是那样 - 它将确保只使用与你想要的模式匹配的单元格(放置一个等号可能仍然可以在具有无法使用的单元格中工作格式,您可能希望避免这种情况,因为跟踪更改将很困难。)
是否可以安全地假设这应该适用于某些类似于加号或减号的运算符的数值数据?