dポイントプレゼントキャンペーン実施中!

マクロをシート上で実行する場合、通常ボタンなどをトリガーにして実行しますが、それをセルのフォーカス移動をトリガーに実行すえることはできないでしょうか?
できなければできないでそのことも教えてください。
お願いします

A 回答 (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を取って、実行させるようにするとミスを防げるかと思います。
    • good
    • 0

>セルのフォーカス移動をトリガー


言葉どおり、マウスポインタをセルに持っていく(クリックなしで)ことで、何かをさせることなら(Changeイベント、Selectionイベントでなければ)できません。
現在のエクセルのVBAでシートのイベントとして、MS社が提供してないからです。
APIなど使えば当然できるようなので、エクセル設計者が「そこまで一般ユーザーにさせなくても」と思ったのかも知れない。近い将来バージョンアップもないとはいえない。
エクセルのシートのイベントは、VBのフォームなどに比べ貧弱と思います。
    • good
    • 0

こんにちは。



もし、質問の読み方に間違いがなければ、通常は、以下のことですが、

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

これでよろしいのですか?
すごく初歩的なことだと思いますが。

ただし、このイベント駆動のコードは、なかなか慣れないと、ミスをすることが多いと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!