[[20100326130729]] 『Workbook_SheetChangeイベントで複数シートを選択』(ひっぽ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Workbook_SheetChangeイベントで複数シートを選択した場合』(ひっぽ)

 ThisWorkbookにWorkbook_SheetChangeイベントのマクロがあります。
 指定した範囲が変更した場合のみイベントが起きるようにしているのですが、
 シートを複数選択した状態で、指定範囲以外のセルをいじるとエラーが起きます。

 このエラーを回避するにはどのようなコードにすればいいのか教えていただけないでしょうか?

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Application.Intersect(Rows(5), Target) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    '以下コード省略
    Application.EnableEvents = True
 End Sub

 へぇー、面白いですね ^^

 実験してみると、シート毎に動いているようです。
 (For Each Next ループみたいな感じです)

               こんな風に、シートを区別したらどうですか?
              ______↓_____
  If Application.Intersect(Target.Parent.Rows(5), Target) Is Nothing Then Exit Sub

    ※ こちらにどう影響するかは、配慮しておりません。
      ↓
 > '以下コード省略

 (半平太) 2010/03/26 13:49

 半平太さん、ありがとうございます。
 エラーは回避できました。

 Parentプロパティ:親オブジェクトを返します
 とあるのでTargetの親、つまりTargetのシートを示すのですよね?
 省略コードは単一シート内でクローズするマクロのため影響はないようです。

 大変助かりました。
 ありがとうございました。

 ひっぱ より

 ちなみに、ThisWorkbookモジュールのWorkbook_SheetChangeイベントでしたら
 ByVal Sh As Object と引数があるので

 If Application.Intersect(Sh.Rows(5), Target) Is Nothing Then Exit Sub
                         ^^^
 としても動くと思います。参考程度に。
 (momo)

 momoさん
 Shで回避確認しました。
 有益な情報ありがとうございました。

 ひっぽ より

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.