- ベストアンサー
エクセル マクロの実行方法について
エクセル2003を使っています。 あるセル(例えばA1)をクリックする(アクティブにする)とあるマクロ(例えばmacro1)が実行されるようにしたいのですが、どのようにすればよいのでしょうか? フォームボタンを作ってボタンにマクロを割り当てるという方法は都合が悪いので、上記方法が実現できるととても助かります。 初歩的な質問で申し訳ありませんがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
diashun です。 こういうVBEも・・・ Sheet1のVBEに以下を記述↓ Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call Macro1(Target) End Sub 標準モジュールに以下を記述↓ Option Explicit Sub Macro1(Target As Range) Dim rA1 As Range Set rA1 = Range("A1") If Target.Address = rA1.Address Then 'セルA1がアクティブになったときの処理を記述 MsgBox "セルA1がアクティブになりました" Else 'セルA1がアクティブでない時の処理を記述 MsgBox "セルA1は非アクティブです" End If Set rA1 = Nothing End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then ' macro1 MsgBox "実行" End If End Sub $A$1のAは大文字でこの通りに。 上記はA1セルをダブルクリックすると「実行」とでます。 本番はMacro1の前の’を消し、MsgBoxの行を消して 下さい。 コマンドボタンをフォームに載せず、シートに貼りつける手もあります。 A1セルが実際は他のセルの場合はどう変えるべきかわかりますね。
お礼
ありがとうございます。ダブルクリックでは入力状態になってしまうのでちょっと期待通りの動きではありませんがとても参考になりました。
- popesyu
- ベストアンサー率36% (1782/4883)
VBEを開いて 該当のワークシートのイベントをSelectionChangeに指定して、以下下記のようなコードを。 --- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target = Range("A1") Then MsgBox ("処理中") End If End Sub ---
お礼
ありがとうございます、参考になりました。
お礼
ありがとうございます。 すばらしいです!思ったとおりの動きです! 大変参考になりました。ありがとうございました。