- ベストアンサー
マクロのイベントトリガー
マクロをシート上で実行する場合、通常ボタンなどをトリガーにして実行しますが、それをセルのフォーカス移動をトリガーに実行すえることはできないでしょうか? できなければできないでそのことも教えてください。 お願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
EXCELのVBAエディタを開いて、左のエクスプローラを見ると、Microsoft Excel Objects と Moduleの二つのフォルダが見えると思います。通常(マクロのレコードとか、モジュールの追加)とかで、使う場所は、Moduleのフォルダです。シート上でのイベントに対応するプロシージャは、このModule(標準モジュール)ではなく、Microsoft Excel Objects (シートに対応しています)に記述します。-----Microsoft Excel Objectsとか、Module とか、英語環境ですので、申し訳ない。 -Microsoft Excel Objects から、標準モジュールを呼び出すことは、可能ですが、逆は出来ません。 -シートをコピーしたからと言って、シートの裏側に書かれたイベントプロシージャはついて行きません。 -イベントプロシージャは、自分の意に反して、正直に動きますので、慌てる時があります。他人様が触る環境では使わない方が賢明です。 VBAエディタの左側のエクスプローラで、Microsoft Excel Objects の該当シートをダブルクリックすると、右側にコードを記入するところが出てきます。上方に2つ窓が現れます。左がわ:Worksheet を選択 右側:SelectionChangeを選択すると Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub と自動的に記述されます。 ここに、標準モジュールにかかれてあるプロシージャを呼び出すようにすれば完成です(別にこの場所だけで閉じても勿論構いません)。 と、自分自身が昔、苦労したことを思い出して、書きました。参考にしていただければ幸いです。 特定のキーが押されていることを検出して、それとANDを取って、実行させるようにするとミスを防げるかと思います。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>セルのフォーカス移動をトリガー 言葉どおり、マウスポインタをセルに持っていく(クリックなしで)ことで、何かをさせることなら(Changeイベント、Selectionイベントでなければ)できません。 現在のエクセルのVBAでシートのイベントとして、MS社が提供してないからです。 APIなど使えば当然できるようなので、エクセル設計者が「そこまで一般ユーザーにさせなくても」と思ったのかも知れない。近い将来バージョンアップもないとはいえない。 エクセルのシートのイベントは、VBのフォームなどに比べ貧弱と思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 もし、質問の読み方に間違いがなければ、通常は、以下のことですが、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) これでよろしいのですか? すごく初歩的なことだと思いますが。 ただし、このイベント駆動のコードは、なかなか慣れないと、ミスをすることが多いと思います。