• ベストアンサー

VBAで数式を引数にするには

VBAで数式を引数にするには EXCELのVBAで数式を引数にしたマクロを作りたいです。 たとえば1個目のダイアログボックスで x^2+x+1、1個目のダイアログボックスで 1 を入力して、メッセージボックスで3を返すというような感じです。 x^2+x+1 を引数にする方法がわからないので教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 数式といっても所詮文字列です。 むしろ数式として得られた文字列が正しい数式の フォーマットを満たしているかどうかを検証する作業が もっとも大切です。 が、それは結構大変な作業で、やりたいことの本質からは 大きくはずれ、しかも大きな労力がかかります。 そこで、ほんとに基本だけなら Sub test() Dim MyFormula As String Dim x As Double MyFormula = InputBox("数式を入力してください") x = InputBox("x の値を入力してください") MsgBox (Evaluate("=" & Replace(MyFormula, "x", x))) End Sub 上記のコードを標準モジュールに書いて、実行してみてください。 最低限の機能は備えているはずです。 各関数の意味は必ずヘルプで調べてくださいね。

noname#116094
質問者

お礼

ドンピシャリな回答ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

言っていることが曖昧で。VBA程度をやる人の程度を超えていることかも知れず、もう少しやりたいことを丁寧に書くべき問題と思う。 関数の引数として1を渡し、X=1としてX^2+x+1の計算結果3を返すなら、関数そのものの普通の使い方です。X^2+x+1は決った式としてFunctionの中にこの式をコード化した式が組まれます。 関数の引数として、式の形X^2+x+1など(文字列となると思うが)と、未知数変数に入れる値の例えば2などを渡し、結果7をえたいのなら、式を任意に指定することは相当難しい、ないし不可能のことですからあきらめてください。 式を自由に設定することは出来ません。代数多項式に限るとか数種類ならその場限りで、プログラム化することは可能でしょうけれど、原理的に興味のない話です。 VBAにはEvaluateという話題があります。質問と関係したことかもしれないので、Googleで調べてみるとか。

関連するQ&A

専門家に質問してみよう