【ExcelVBA】ユーザーフォームのChangeイベントをハンドリングしたい
それ以外の入力には、CommandButtonを押したらTextBoxに値を入力させたり、他のプロシージャからTextBoxに値を入力させたり等々があります。
Changeイベントをハンドリング
今回は、TextBox1にカーソルから値を入力させた場合と、CommandButton1を押してTextBox1に値を入力させた場合の TextBox1_Change イベントを、 ActiveControl.Name を使って違いを識別させます。※ActiveControl.Nameは、フォーカスがあるコントロール名を返します。
以下では、ユーザーフォーム画面に「TextBox1」と「CommandButton1」が存在することを前提に説明します。
UserForm1のオブジェクト
オブジェクト名は TextBox1 と CommandButton1 です。
CommandButton1 を押すと TextBox1.value = "ボタン入力テスト" が実行される仕組みにします。
UserForm1のコード内容
Private Sub TextBox1_Change() If ActiveControl.Name = TextBox1.Name Then MsgBox "同じ: " & ActiveControl.Name & "=" & TextBox1.Name Else MsgBox "違う: " & ActiveControl.Name & "<>" & TextBox1.Name End If End Sub Private Sub CommandButton1_Click() TextBox1.value = "ボタン入力テスト" End Sub3行目のif文で コントロール名の違いを識別させています。
結果
◆カーソルから入力した場合の結果◆ボタンを押した場合の結果
ディスカッション
コメント一覧
まだ、コメントがありません