- ベストアンサー
シート選択時のみに実行されるようにしたい。
Excel2003です。 Sheet2_Activateに MsgBox "a" とすると、Sheet2を選択するたびにメッセージボックスを表示できますが、Sheet1選択状態で別の関数からSheet2上にPasteすると、Sheet2_Activateが発生し、メッセージボックスが表示されてしまいます。(表示されているのはSheet1のまま) Activateは「有効になったとき」なので仕方ないのかもしれないですが、Sheet2が“選択(表示)されたときのみ”メッセージボックスを出すにはどうしたらよいのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Pasteを使わないで、Copyメソッドの引数に転送先を指定すれば、 Sheet2のActivateは発生しませんよ。 ------------------------------ Worksheets("Sheet1").Range("A2").Copy Worksheets("Sheet2").Range("A3") ---
その他の回答 (1)
- 0shiete
- ベストアンサー率30% (148/492)
>Sheet1選択状態で別の関数からSheet2上にPasteすると のところがわかりません。VBAでコーディングされているのですか? 状況の補足をお願い致します。
補足
返信ありがとうございます。 たとえば、Sheet1上のコマンドボタンcmdTestをクリックすると呼ばれるcmdTest_Clickに、 With Sheets("Sheet2") msgbox "b" .Range("A2").Copy msgbox "c" .Paste (.Range("A3")) msgbox "d" End With と書いて押すと、Sheet2_Activateが呼ばれます。 親記事の部分と合わせると、表示されるメッセージボックスの順はb c a dになります。 ペースト時にActivateが発生しているのだと思いますが、cmdTestをクリックしたときにはこのaを表示されないようにしたいと思っています。
お礼
返信ありがとうございます。 希望通りの動作ができました。 ありがとうございました。