"1 + 1"のような文字列値を数式に変換するVBマクロを作成しています。VBA数式が正しいかどうかを確認する方法
Cells(1, 1).Formula = "=" & Cells(1, 1).Value
ただし、値の文字列を計算できない場合、実行時エラー '1004'が表示されます。
文字列が式に変換されることを確認するにはどうすればよいですか?
"1 + 1"のような文字列値を数式に変換するVBマクロを作成しています。VBA数式が正しいかどうかを確認する方法
Cells(1, 1).Formula = "=" & Cells(1, 1).Value
ただし、値の文字列を計算できない場合、実行時エラー '1004'が表示されます。
文字列が式に変換されることを確認するにはどうすればよいですか?
最初に数式を作成し、それに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
Evaluateメソッドは最大255文字に制限されているため、255文字を超える文字列は無効な式として有効であると報告されます。 – M1chael
セルの値を完全に検証する必要がある場合は、正規表現パターンを使用することができます。これにより、必要なパターンに一致するセルのみが使用されます(等号を置くことは、あなたはそれを避けたいかもしれません。変更を追跡するのは難しいからです)。
プラスまたはマイナスのような演算子を使用した数値データに適用する必要があると考えるのは安全ですか?
最初に数式を作成し、** Evaluate **メソッドを使用します。エラーが返されない場合は、セルに追加できます。 –
私はこのアプローチをサポートしています - おそらくティム氏のコメントではなく答えでしょうか? – brettdj
brettdj、それは短い答えだったので、stackoverflowはコメントにそれを強制したかもしれません。 – Jon49