2011-10-22 13 views
2

"1 + 1"のような文字列値を数式に変換するVBマクロを作成しています。VBA数式が正しいかどうかを確認する方法

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

ただし、値の文字列を計算できない場合、実行時エラー '1004'が表示されます。

文字列が式に変換されることを確認するにはどうすればよいですか?

+2

最初に数式を作成し、** Evaluate **メソッドを使用します。エラーが返されない場合は、セルに追加できます。 –

+0

私はこのアプローチをサポートしています - おそらくティム氏のコメントではなく答えでしょうか? – brettdj

+0

brettdj、それは短い答えだったので、stackoverflowはコメントにそれを強制したかもしれません。 – Jon49

答えて

5

最初に数式を作成し、それに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

Evaluateメソッドは最大255文字に制限されているため、255文字を超える文字列は無効な式として有効であると報告されます。 – M1chael

0

セルの値を完全に検証する必要がある場合は、正規表現パターンを使用することができます。これにより、必要なパターンに一致するセルのみが使用されます(等号を置くことは、あなたはそれを避けたいかもしれません。変更を追跡するのは難しいからです)。

プラスまたはマイナスのような演算子を使用した数値データに適用する必要があると考えるのは安全ですか?

関連する問題