• ベストアンサー

エクセルのマクロをセルの値に応じて自動起動したい

初心者です。愚問かもしれませんが、よろしくお願いします。 さて、質問です。あるセルに入力された値に応じて、特定のマクロを起動したり、しなかったり、というような関数はないでしょうか? つまりシート内の関数によってマクロを起動できないでしょうか?

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

A1に1が入力されたときにMacro1を実行したいのあれば、次の手順で出来ます。 マクロの定義の Sub Macro1() を Function Macro1()に変更。 A1以外のセルに =if(A1=1,Macro1(),0) と入力する。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=511760
hkom007
質問者

お礼

ありがとうございました。 何とか解決しました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 関数でマクロを操作することは出来ません。 セルに入力された値に応じてマクロを起動させたり、させなかったりする簡単な方法は、マクロの一番最初に条件分岐を入れる方法です。 Sub Macro()   If Range("A1").Value <> "実行" Then     Exit Sub   End If   'ここからマクロの内容を記述 End Sub この場合は、マクロを実行すると、最初にセル(上記だとA1)の値を確認して、条件に合わなければExitでマクロを終了します。 もし、セル入力後すぐにマクロを起動したいなら、そのシートのChangeイベントにマクロの内容を記述します。

すると、全ての回答が全文表示されます。
  • wildcard
  • ベストアンサー率54% (54/100)
回答No.1

関数では思いつかないのですが、下記のようにマクロで制御することは可能です。これはファイルを開いた時に、Sheet1のA1セルの値によって実行するマクロが変化します。 Sub Auto_Open()   Select Case Sheets("Sheet1").Range("A1").Value     Case 1: Call Macro1 'Macro1を実行     Case 2: Call Macro2 'Macro2を実行     Case 3: Exit Sub 'マクロを実行しない End Select End Sub Sub Macro1()   MsgBox "Macro1を実行します"   'Macro1の処理 End Sub Sub Macro2()   MsgBox "Macro2を実行します"   'Macro2の処理 End Sub

すると、全ての回答が全文表示されます。

関連するQ&A