Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Excel VBA】あるシートのセル範囲に変更があった時に処理を実行する方法


Excel VBAで作業している時にある特定のセルに変更があった時に何か操作したい場合があったりします。

 

そのような場合の方法について紹介します。

 

 

 

目次

 

1.あるシートに変更があった時に処理を実行する方法

 

シートモジュールの Worksheet_Change関数は、文字通りそのワークシートに変更があった時に呼び出される関数です。

 

そのため、まず、1つ目として、該当シート全体に対して何らかの変更があった時に、ある操作を行いたいような場合は、以下のように記載します

 

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "シートに何らかの変更がされました"
End Sub

 

これにより、このシートに何らかの変更が加えられたときは、

メッセージボックスにて、

 

  「シートに何らかの変更がされました」

 

と表示されます。

この関数自体は、該当シートのモジュール内に記載します。

 

次に、該当シート内のあるセル(範囲)に変更があった時に処理を実行する方法です。

 

 

2.あるシートのセル範囲に変更があった時に処理を実行する方法

 

これは、シートモジュール内に記載されたWorksheet_Change関数内で、Intersect関数を使用することで実現できます。

 

Intersect関数は、複数のセル範囲の重なっている範囲を取得する関数ですが、これを使用して以下のように記載します。

 

 

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("C3:F5")) Is Nothing Then
        Exit Sub
    Else
        MsgBox "セルの値が変更されました"
    End If
End Sub

 

上記の内容は以下のようになります。

 

まず、該当シート内に変更があった時は、このWorksheet_Change関数が呼ばれます。

この中で、Targetが変更があったセル(範囲)となります。

 

この中で、

 

  Intersect(Target, Range("C3:F5"))

 

は、「変更があったセル範囲(Target)とC3からF5の範囲の重なり」を取得することになります。

 

  If Intersect(Target, Range("C3:F5")) Is Nothing

 

で、この重なりが何もなかったときは

 

  Exit Sub

 

ということで何も実行せずにWorksheet_Change関数を抜けます。

 

反対に、何らかの重なりがあった時は、

 

Else側が実行されますので、

 

  MsgBox "セルの値が変更されました"

 

にて「セルの値が変更されました」と表示されます。

 

 

1,2の場合共、MsgBoxの行を処理したい内容に変更すれば、変更時に処理を実行させることができます。

また、2の場合に変更をチェックする範囲を変更したい場合には、Range("C3:F5")を他の範囲に変更することで実現できます。

 

 

 

以上が、あるシートのセル範囲内に変更があった時に処理を実行する方法となります。

繰り返しになりますが、この関数自体は、該当シートのモジュール内に記載します。

 

 

 

 

 

関連記事:

【Excel】の「開発」タブを表示させる方法 - Django Girls and Boys 備忘録

 

Microsoft EdgeでのInternet Explorerモード設定手順 - Django Girls and Boys 備忘録

 

【Excel】プルダウンリストの設定方法 - Django Girls and Boys 備忘録

 

【Excel】ボタンの表示文字を改行する方法 - Django Girls and Boys 備忘録

 

【Excel】プルダウンリスト 設定方法、元データ追加方法、元データ変更方法 - Django Girls and Boys 備忘録

 

【Excel VBA】結合セルのコピー方法について - Django Girls and Boys 備忘録

 

【Excel VBA】あるシートのセル範囲に変更があった時に処理を実行する方法 - Django Girls and Boys 備忘録

 

【Googleサーチコンソール Googleアナリティクスの登録方法】サイト作成後の分析、活用に欠かせない登録 - Django Girls and Boys 備忘録

 

【Excel 名前の定義】「名前"○○○"は既に存在します。この名前にする・・・」のメッセージ表示を解決する方法 - Django Girls and Boys 備忘録

 

【Excel マクロ(VBA) 行削除】条件を満たした行を削除する方法(For~Next文を使用) - Django Girls and Boys 備忘録

 

【Excel マクロ(VBA)】最大行番号、最大列番号を取得する方法 - Django Girls and Boys 備忘録

 

【ExcelマクロからのI.E.操作】I.E.のセキュリティに絡むエラー(オートメーションエラー)発生時の対応方法 - Django Girls and Boys 備忘録

 

【Python Excel】ExcelからのPython実行ファイル(アプリケーションファイル)起動方法 - Django Girls and Boys 備忘録

 

【Excel VBA】シート削除時などに確認メッセージを表示しない方法 - Django Girls and Boys 備忘録

 

【Excel】数式の計算方法について、計算方法の自動/手動変更方法 - Django Girls and Boys 備忘録