- ベストアンサー
VBAで数式を引数にするには
VBAで数式を引数にするには EXCELのVBAで数式を引数にしたマクロを作りたいです。 たとえば1個目のダイアログボックスで x^2+x+1、1個目のダイアログボックスで 1 を入力して、メッセージボックスで3を返すというような感じです。 x^2+x+1 を引数にする方法がわからないので教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 数式といっても所詮文字列です。 むしろ数式として得られた文字列が正しい数式の フォーマットを満たしているかどうかを検証する作業が もっとも大切です。 が、それは結構大変な作業で、やりたいことの本質からは 大きくはずれ、しかも大きな労力がかかります。 そこで、ほんとに基本だけなら Sub test() Dim MyFormula As String Dim x As Double MyFormula = InputBox("数式を入力してください") x = InputBox("x の値を入力してください") MsgBox (Evaluate("=" & Replace(MyFormula, "x", x))) End Sub 上記のコードを標準モジュールに書いて、実行してみてください。 最低限の機能は備えているはずです。 各関数の意味は必ずヘルプで調べてくださいね。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
言っていることが曖昧で。VBA程度をやる人の程度を超えていることかも知れず、もう少しやりたいことを丁寧に書くべき問題と思う。 関数の引数として1を渡し、X=1としてX^2+x+1の計算結果3を返すなら、関数そのものの普通の使い方です。X^2+x+1は決った式としてFunctionの中にこの式をコード化した式が組まれます。 関数の引数として、式の形X^2+x+1など(文字列となると思うが)と、未知数変数に入れる値の例えば2などを渡し、結果7をえたいのなら、式を任意に指定することは相当難しい、ないし不可能のことですからあきらめてください。 式を自由に設定することは出来ません。代数多項式に限るとか数種類ならその場限りで、プログラム化することは可能でしょうけれど、原理的に興味のない話です。 VBAにはEvaluateという話題があります。質問と関係したことかもしれないので、Googleで調べてみるとか。
お礼
ドンピシャリな回答ありがとうございます。