- ベストアンサー
エクセル マクロの実行について
セルに「ある条件」を満たしたら登録したマクロが実行されるようにしたいのですが可能でしょうか? 「ある条件」→たとえばIF関数の結果が真だったら すみません、エクセル初心者なのでどなたか教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
仮にA2セルに =IF(A1>0,TRUE)という式がある場合 そのシートのチェンジイベントで Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A2") = True Then Call 実行するマクロ End Sub にしておけば、A1セルに入力した際、値をA2が判断してTRUEであれば「実行するマクロ」が作動します。
その他の回答 (2)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。KenKen_SP です。 1.【シートモジュールで条件判定し、マクロを起動する】 通常はこちらの方法が使われます。 Private Sub Worksheet_Change(ByVal Target As Range) '変化のあったセルがA1セルか? If Target.Address = "$A$1" Then '条件判定:A1セルの値は 1 か? If Target.Value = 1 Then MsgBox "A1セルは条件を満たしました" End If End If End Sub 2.【ワークシート上で条件判定し、マクロを起動する】 処理内容にもよっては不向きな場合もありますが、こんな方法も あります。 マクロを Sub ではなく、Function 、、つまり関数にしてしまいます。 Function TestMacro() '<-- Sub を Function に替える MsgBox "A1セルは条件を満たしました" TestMacro = "" '戻り値はなし End Function そして、ワークシートの B1 セルに次の式を入力します。()は必須 です。 =IF(A1=1,TestMacro(),"") これで、A1 に 1 を入力するとマクロが起動します。 しかし、、、計算式をユーザーに消される恐れが、、、
- merlionXX
- ベストアンサー率48% (1930/4007)
No1です。 失礼しました。 Private Sub Worksheet_Change(ByVal Target As Range) If Range("A2") = True Then Call 実行するマクロ End Sub です。
お礼
早々に回答いただいてすみません。ありがとうございました。頑張ってトライしてみますね。 エクセル初心者なので、わからないことだらけです。 おしえていただいたのって、VBAっていうんですよね。 チョッとそこから勉強してみます。 また教えてくださいネ。
お礼
丁寧にご説明いただいてありがとうございます。 エクセルをさわりだして間が無いので分からないことばかりです。奥深いですね~。 NO.1の方も同じ方法で教えてくださっていますので、チャレンジしてみます。 まずVBA勉強しなくっちゃ! また分からないことがあったらお願いいたします。