• ベストアンサー

シート選択時のみに実行されるようにしたい。

Excel2003です。 Sheet2_Activateに  MsgBox "a" とすると、Sheet2を選択するたびにメッセージボックスを表示できますが、Sheet1選択状態で別の関数からSheet2上にPasteすると、Sheet2_Activateが発生し、メッセージボックスが表示されてしまいます。(表示されているのはSheet1のまま) Activateは「有効になったとき」なので仕方ないのかもしれないですが、Sheet2が“選択(表示)されたときのみ”メッセージボックスを出すにはどうしたらよいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 Pasteを使わないで、Copyメソッドの引数に転送先を指定すれば、 Sheet2のActivateは発生しませんよ。 ------------------------------ Worksheets("Sheet1").Range("A2").Copy Worksheets("Sheet2").Range("A3") ---

panda--
質問者

お礼

返信ありがとうございます。 希望通りの動作ができました。 ありがとうございました。

その他の回答 (1)

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.1

>Sheet1選択状態で別の関数からSheet2上にPasteすると のところがわかりません。VBAでコーディングされているのですか? 状況の補足をお願い致します。

panda--
質問者

補足

返信ありがとうございます。 たとえば、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を表示されないようにしたいと思っています。

関連するQ&A