VBAの実践を通じて、特定の範囲またはセルが変更されたときにマクロを実行する必要があります。その場合、ターゲット範囲に変更が加えられたときにマクロを実行するには、changeイベントを使用します。

`link:/ excel-macros-and-vba-events-in-vb [Events in VBA]を使用すると、特定のイベントが発生したときにマクロを実行できます。

構文VBA範囲変更イベント

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("your_range")) Is Nothing Then

call your_macro

End If

End Sub

イベントはモジュールでは機能しません。それらをオブジェクト(ワークシート、チャート、ワークブック)に書き込む必要があります。

Latには、指定された範囲で変更が行われたときにマクロを実行する方法を学習する例があります。

例:VBAマクロを実行する範囲A2:A100で変更が行われた場合最初に、イベントが発生するシートを選択します。 VBAエディターでそのシートをダブルクリックし、以下のコードまたは上記の汎用コードをコピーして、要件に応じて変更を加えます。

image

この例では、シート2の範囲A2:A100で変更が行われたときに、マクロ/ VBAコードを実行します。これを行うには、プロジェクトエクスプローラーでsheet2をダブルクリックします。そのシートのコーディングページが開きます。シートを右クリックし、ビューコードをクリックして同じことを行うことができます。

changeイベントを使用する必要があります。そのために、デフォルトのsubroutineWorksheet_Change(ByVal Target As Range)を使用します。指定された変更が行われたときにトリガーされます。だから私たちのコードはこれです:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2:A100")) Is Nothing Then

Call TestEvent

End If

End Sub

Sheet2で範囲A2:A100に変更を加えると、上のgifに示されているように、サブルーチンTestEventが呼び出されます。

TestEventは、module2のパブリックサブルーチンです。イベントが機能しているというメッセージをポップアップするだけです。

Sub TestEvent()

MsgBox "Event is working!"

End Sub

どのように機能しますか?

条件を設定しました:

If Not Intersect(Target、Range( “A2:A100″))Is Nothing Then HereIntersect(Target、Range( “A2:A100″))Is Nothingは、範囲A2:A100に変更が加えられていない場合にTrueを返します。このステートメントの前に、「Intersect(Target、Range( “A2:A100″))」で指定された出力を逆にするNot演算子を配置します。したがって、範囲A2:A100で変更が行われない場合、式はフォールズを返し、subTestEventは呼び出しを取得しません。 A2:A100の範囲のセルに変更を加えると、式はTrueを返し、イベントが発生します。そして、それがここで起こっていることです。

注:このブロックには任意のサブルーチンを配置できます。どのモジュールからでもかまいません。ただし、これはパブリックサブルーチンである必要があります。範囲は任意に設定できます。シート全体が限界です。

そうですね、これは、指定された範囲で変更が行われたときに、サブルーチンを呼び出したり、マクロ/ VBAコードを実行したりする方法です。それは基本的なイベントの例でした。このイベントは、変更がテキストベースの場合にのみトリガーされます。テキストベースとは、セルに何かを書き込んだり削除したりすると、イベントがトリガーされることを意味します。セルのフォーマットを変更しても、トリガーされません。それを行うには他の方法があります。

お役に立てば幸いです。このVBAトピックまたはその他のExcel関連トピックに関連する質問がある場合は、以下のコメントセクションにお知らせください。そして、下記の他の関連する人気のある投稿をチェックしてください。

関連記事:

link:/ events-in-vba-simplest-vba-code-to-highlight-current-row-and-column-using [現在の行と列を強調表示する最も簡単なVBAコード] * |この小さなVBAスニペットを使用してシートの現在の行と列を強調表示します。

link:/ events-in-vba-the-worksheet-events-in-excel-vba [ExcelVBAのワークシートイベント] * |ワークシートイベントは、シートで指定されたイベントが発生したときにマクロを実行する場合に非常に便利です。

人気の記事:

link:/ keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [生産性を高めるための50のExcelショートカット] |あなたの仕事をより速くしてください。これらの50のショートカットにより、Excelでの作業がさらに高速になります。

link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数] |これは、さまざまな範囲やシートから値を検索するために使用される、Excelの最も使用され人気のある関数の1つです。 link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] |この驚くべき関数を使用して、条件付きの値をカウントします。特定の値をカウントするためにデータをフィルタリングする必要はありません。

ダッシュボードを準備するには、Countif関数が不可欠です。

link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法] |これは、ダッシュボードのもう1つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。