[Excel VBA] ワークシートの変更を検知する (Worksheet.Change イベント)

公開日: : 最終更新日:2015/07/10
カテゴリ: 03-5_ExcelVBA_メモ・小技集
タグ: , ,

動作確認環境

Windows7
Excel: 2007

構文

式:Worksheet オブジェクト。

<戻り値>
Nothing
・・・?

Target Range型、必須
変更された範囲が渡される。複数のセルを渡すことができる。

メモ

・ Worksheet_Change

サンプルコード

1. ワークシートのセルが変更されたことを検知

2. ワークシートのセルに特定の変更が生じたことを検知

3. 特定のセル、セル範囲に変更が生じたことを検知

・Intersectメソッドを使ってTargetが指定範囲にあるかどうかを検知することができます。

ただし、この場合複数の変更(たとえば複数のコピー&ペースト)にはうまく対応できません。
そこで、方法4。

4-1. 特定のセル、セル範囲に変更が生じたことを検知

ただし、この方法では、『Ctrl+Aで全セルを選択してコピーする』などのアクションを行うと、全セル(16,384列 x 1,048,576行 = 17,179,869,184セル(約170億セル))に対して、For~Next間のループを繰り返すことになるため注意が必要です。
※マクロを停止させる場合は、エクセル画面で「Ctrl+Pause」または「Ctrl+Break」を押下。

これを回避させるために、『たとえば100個以上の複数のセルの同時編集時はループを回避する』などしてみます。(方法4-2)
※もっとよい回避のアイディアがあるはず・・・。

4-2. 特定のセル、セル範囲に変更が生じたことを検知

※「Target.Count」のCountプロパティはLong型で、2007の全セル数はLong型の-2,147,483,648~2,147,483,647を超えるためオーバーフローを起こすようです。
2007ではCountLargeプロパティが追加され、これを用いるとオーバーフローを起こさずに全セルカウントすることができます。

課題

N/A

サンプルファイル

N/A

参考

[]Worksheet.Change イベント (Excel)

広告

関連記事

[Excel VBA] 任意のセルが、指定したセル範囲にあるか調べる(Application.Intersect メソッド

動作確認環境 Windows7 Excel: 2007 構文 式: Appl

記事を読む

no image

[Excel VBA] 印刷時の余白、ヘッダー、フッター等を設定する。

動作確認環境 Windows7 Excel: 2007、2013 説明 余白、ヘッダー、

記事を読む

[Excal VBA] オートフィルターを使ってリストにフィルターをかけます。 – Range.AutoFilter メソッド-

動作確認環境 Windows7 Excel: 2007, 2013 説明 オートフィルタ

記事を読む

no image

[Excel VBA] メッセージボックスを使う

動作確認環境 Windows10 Excel: 2016 説明 メッセージボックスを使う

記事を読む

no image

[Excel VBA] セルの行列番号、参照範囲(アドレス)を取得する(Range.Address プロパティ) – Excel VBA

動作確認環境 Windows7 Excel: 2007 構文 対象範囲: Rang

記事を読む

no image

03-5 ExcelVBAメモ・小技集 INDEX

記事を読む

[Excal VBA] セルをアクティブにする。 – Range.Activate メソッド-

動作確認環境 Windows7 Excel: 2007, 2013 説明 1つのセルをア

記事を読む

no image

[Excal VBA] セルやセル範囲を選択する – Range.Select メソッド-

動作確認環境 Windows7 Excel: 2007 説明 セルやセル範囲を選択します

記事を読む

no image

動的配列と固定配列 – Excel VBA

動作確認環境 Windows7 Excel: 2007 構文 N/A サンプルコー

記事を読む

no image

[Excel VBA] 改ページプレビュー、ノーマルビュー(標準)、ページレイアウト表示を切り替える -Window.Viewプロパティ-

動作確認環境 Windows7 Excel: 2007、2013 説明 ウィンドウに表示

記事を読む

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

広告


no image
[Excel] 編集禁止になっているセルに書式設定で色を付ける。

動作確認環境 Windows10 Excel: 2016 編

no image
[Excel] セルを編集禁止にする。

動作確認環境 Windows10 Excel: 2016 説

no image
[Excel VBA] メッセージボックスを使う

動作確認環境 Windows10 Excel: 2016 説

no image
[Word] フィードで連番(“000, 001″などの3桁以上)番号を入力したい

自分用のメモ 執筆中 マイクロソフト ワード 連番番号

no image
[Excel基本操作] 見えているセルだけをコピーする

動作確認環境 Windows7 Excel: 2007 見え

→もっと見る

    PAGE TOP ↑