みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excelマクロ シートの移動

excelのシートを移動するときにマクロでイベントを発生させたい。

移動前のシートにWorksheet_Deactivate()の処理を
書いたのですが移動前のシートをselectしているため
何度もループしてしまいます。

何かよい方法はありますでしょうか?

投稿日時 - 2006-12-13 15:31:51

QNo.2598648

すぐに回答ほしいです

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

No2のmerlionXXです、ar00000さんこんばんは。
あれだけではわかりにくいですね。例を書きます。

Private Sub Worksheet_Deactivate()
MsgBox "Deactivateです"
Me.Select '自分に戻る
MsgBox "またActiveです。"
Application.EnableEvents = False 'イベントを発生させない
Sheet2.Select '他シート再度選択
Application.EnableEvents = True 'イベントを発生せない指示を止める
End Sub

投稿日時 - 2006-12-13 16:15:33

お礼

この方法で上手くいきました。
どうも有り難うございました。

投稿日時 - 2006-12-14 09:16:51

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

Thisworkbookのイベントに
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name
End Sub
これでシートタブをクリックするごとに、シート名を表示します。
またモジュール1に
Sub test01()
Worksheets("Sheet2").Select
End Sub
を実行(マウスでクリックでなくて)しても、シート名を表示します。
Workbook_SheetActivateを使う。これではどうですか。

投稿日時 - 2006-12-13 19:30:30

ANo.2

Worksheet_Deactivate()で移動前のシートをselectして、また他のシートをselectしているのですか?
それなら無限ループに陥りますね。selectをやめて他の方法をとるか、Application.EnableEventsで逃げてください。

投稿日時 - 2006-12-13 16:08:37

ANo.1

ちょと意味不明ですが。。。

WorkSheet_Activateイベントのことでしょうか。
 

投稿日時 - 2006-12-13 15:57:05

あなたにオススメの質問