• ベストアンサー

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

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

noname#116094
noname#116094

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

  • ベストアンサー
回答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/17068)
回答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

  • EXCELで数式入力ボックスに直接式を書くのと、EXCEL VBAでプ

    EXCELで数式入力ボックスに直接式を書くのと、EXCEL VBAでプログラムを書く場合と、何が違うのでしょうか? 素人なのでよく分かっていないのですが、つまりEXCELでこんなことしてみたい!と思ったときに、どちらを使えば良いのかの判断はどのようにつければ良いのですか?

  • Excel2007 VBAで数式がうまく入力が出来ません。

    Excel2007 VBAで数式がうまく入力が出来ません。 数式を、"=IF(AA7=0,"     ---",Z7/AA7)"     " "内には半角スペース4コ 半角マイナス3コ      と入力したいのですが、以下のように自動的に入力されてしまい、マクロ実行時に、エラーとなってしまい、ストップしてしまいます。 解消方法を教えて下さい。 VBEで入力しても、以下のように自動的に修正されてしまいます。   Range("AB7").Formula = "=IF(AA7=0," - --",Z7/AA7)"

  • エクセルVBAについて

    今、エクセルVBAでマクロの作成を行っています マクロの中で、作業用に別なエクセルとシートを作成したのですが マクロの最後でその作業用のエクセルとシートを削除する用にしました。 その際に、エクセルがメッセージボックスが開き 『このエクセルブックを閉じますか』や『このシートを削除してよろしいですか』などと聞いてきます。 このボックスを出さないように強制的に消すことは出来ないのでしょうか? 出来るのであれば、やり方を教えてください。

  • Excel VBAの組み込みダイアログについて

    ExcelのVBAの組み込みダイアログで、 Application.Dialogs(xlDialogInsertPicture).Show についてですが、ヘルプの組み込みダイアログボックス引数一覧をみると xlDialogInsertPicture file_name、filter_number とあります。 これは、ダイアログボックスの図の挿入で、ファイル名とファイルの種類の引数になると思いますが、 ダイアログボックスの右上に表示される、表示の縮小表示を選択することってできるのでしょうか?また、ファイルの場所の指定ってできるのでしょうか?どなたか、詳しい方いらっしゃいましたら教えてください。よろしくお願いいたします。

  • VBAでの引数かっこの使い方がよくわからない

    今までプログラム等の経験がなく、今初めてVBAを使っているのですが、引数を入れる()の使い方がよくわかりません。 調べれば調べるほど混乱するような感じです。 例えばプロシージャの後の()は、プログラムのサンプル例で、その()の中にあらかじめ設定された変数(文字列でした)が入っているのを見た事があるのでそのように使うのでしょうけれど、どういう場合に使うものなのでしょうか。 また、msgbox(○○)で、()内に入っているものがメッセージボックスに表示される事も、その現象だけは経験的に知っていますが、それは、 msgbox"○○"  や、 msgbox a a=a+1 という場合と何が違うのでしょうか。 例えばmsgbox(a+1) としてしまっては、いけないのですか?

  • 記録マクロについて教えてください。

    記録マクロについて教えてください。 マクロの記録を使って複数範囲を選択しDeleteする試行をしたのですが、 引数を省略することはできませんとダイアログボックスが表示されました。 どうすれば使えるようになるのでしょうか? ちなみにマクロのセキュリティーは警告を表示して・・・にしてあります。 ↑これのメッセージボックスも出てきません。 使っているのはエクセル2007です。 どうかお願いします。

  • EXCEL VBA プログラミング

    EXCEL VBAについて教えて下さい。 プログラミング超初心者です。 book1でマクロを実行し、ダイアログボックスを表示させて、任意のファイル(book2)を開き、book1のsheet1をまるごとbook 2の末尾にコピーするという処理をしたいのですが、うまくマクロが組めません。 ダイアログボックス表示→ファイルの選択まではいけたのですが、その先で苦戦しています。。 ご存知の方、マクロの組み方をご教示いただけますでしょうか。 よろしくお願い致します。

  • エクセルVBA

    エクセルVBAのコードについて質問です。エクセル初心者です。 Windows10で32bit版のエクセル2010を使っています。 1.エクセルのマクロは32bit版でも64bit版にも対応できるようコードを組んでいるのですが、 32bitで動いているのか64bitで動いているのかどのように確かめたらよいでしょうか? あるマクロの途中に #If VBA7 And win64 Then MsgBox ” 64bit ” #Else またはIf VBA7 And win32 MsgBox ”32bit” #End If を組み込むと、If分の終わりには If分の最後に#EndIfが必要です、と表示されて(EndIfを書いているのに) エラーになります。 2.エクセルマクロをIEと連携させて使っています。 IEを操作させている途中でエクセルのメッセージBoxを最前面表示させるには どうしたらよいでしょうか? IEで特定の操作をしたら、エクセルが最前面に出て、OKボタン付きのメッセージBoxが表示され、OKボタンを押すとIEを操作する という動作をコードに書いています。 コードを書いた直後は、IE上での特定の操作のあとメッセージBoxが適切に最前面表示されますが、 一度保存し閉じてファイルを開き直しマクロを実行すると、メッセージBoxは最前面に出てくれません。 検討したコードは 1. SetForegroundWindow 2.VBA AppActivate. Microsoft Excel. Capture 3.AppActivate Microsoft です。いずれのコードを書いた場合も、保存まではうまくメッセージBoxに回答できるが 保存しファイルを開き直してマクロを実行するとメッセージBoxはIEの後ろに隠れたままであり、エクセルを選択しないと最前面表示されません。 しかし一応最前面表示されることもあることから、マクロを一度実行するごとにエクセル内のデータが変わる可能性も考えられす。

  • VBAにてコントロールを引数にしたい

    VBAの処理にて、 コントロールを引数にしたいのですができますか? 以下のようなことがしたいです。 A,Bフォーム C,Dテキストボックスがあり、 フォーム名とテキストボックス名を渡し 初期値を設定したい・・・。

  • エクセル2007の数式

    エクセル2007なんですが、 自分で手入力で数式を入れる方法が分かりません。 ウェブサイト内の分析を行うような数式らしいのですが、いまいち打ち方が分かりません。 初歩的な質問かもしれませんが、詳しい方どうかお教えいただけませんか。 エクセルに関してはVBAなどは理解しておらず、表計算くらいしか使えません。 初心者目線で分かりやすくお教えいただければ幸いです。

専門家に質問してみよう