[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.