コントロールの値が変化したときに発生するイベント(Changeイベント)
ユーザーフォームに設置したコントロール上の値がユーザーの操作によって変更されたりプログラムの中で変更されたりした時に発生するイベントが Change イベントです。どこかのコントロールの値が変化したときに、別の処理を連動して行う場合に利用します。ここでは Excel のユーザーフォームで Change イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説します。
(Last modified: )
ユーザーフォームにおけるChangeイベントとは
ユーザーフォームにおける Change
イベントがどのような時に発生するのか、また発生したときのイベントプロシージャの記述方法について解説します。
どのようなときにイベントが発生するのか
Change
イベントはコントロールの値が変更されたときに発生します。
・テキストボックスに新しい値が入力された
・コンボボックスやリストボックスで新しい項目が選択された
・チェックボックス、トグルボタン、オプションボタンで項目がクリックされた
・タブストリップで別のタブがクリックされた
・マルチページで別のページが選択された
・スピンボタンで矢印がクリックされた
・スクロールバーでスクロールボックスが移動した
Changeイベントのイベントプロシージャ
Change
イベントに対するイベントプロシージャは次のような形式となっています。
Private Sub オブジェクト_Change() End Sub
対象のコントロールで値が何らかの形で変更されると Change
イベントが発生し、 Change
イベントに対するイベントプロシージャが呼び出されます。例えばテキストボックスに新しい値が入力されたときに実行したい処理を Change
イベントに対するイベントプロシージャ中に記述しておいてください。
それでは簡単なサンプルで試してみます。ユーザーフォームにテキストボックスとラベルを設置しました。
ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中でテキストボックスと計算結果を表示するラベルに初期値を設定します。
Option Explicit Private Sub UserForm_Initialize() TextBox1.Value = 0 TextBox2.Value = 0 Label3.Caption = 0 End Sub
そして 2 つのテキストボックスに対する Change
イベントに対するイベントプロシージャをコードウィンドウで次のように記述してください。
Option Explicit Private Sub TextBox1_Change() Label3.Caption = Val(TextBox1.Value) + Val(TextBox2.Value) End Sub Private Sub TextBox2_Change() Label3.Caption = Val(TextBox1.Value) + Val(TextBox2.Value) End Sub
どちらかのテキストボックスの値が変更されると、 2 つのテキストボックスの値を取得し加算した結果をラベルに表示します。
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。
どちらかのテキストボックスの値を変更すると、 Change
イベントが発生して新しい値で加算を行いラベルに結果を表示します。
-- --
Excel のユーザーフォームで Change イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。