コントロールのオブジェクト名を変更する
ユーザーフォームやコントロールに対して VBA を使ってプログラムを行うとき、それぞれのコントロールに付けられたオブジェクト名を使用します。ユーザーフォームにコントロールを設置したときにデフォルトのオブジェクト名が自動的に付けられますがあとから変更することができます。ここでは Excel のプロパティウィンドウを使ってユーザーフォームやコントロールのオブジェクト名を変更する方法について解説します。
(Last modified: )
オブジェクト名を変更する
ユーザーフォームやコントロールのオブジェクト名を変更する方法です。ユーザーフォームのオブジェクト名を変更する場合は、ユーザーフォームの何もないところをクリックしてください。プロパティウィンドウの「オブジェクト名」のところに現在設定されているオブジェクト名が表示されます。
現在このユーザーフォームのオブジェクト名は「UserForm1」になっていることが確認できます。
ユーザーフォームに設置されている各コントロールのオブジェクト名を確認するには、対象のコントロールをクリックして選択してください。プロパティウィンドウの「オブジェクト名」のところに現在設定されているオブジェクト名が表示されます。
テキストボックスのオブジェクト名は「TextBox1」、コマンドボタンのオブジェクト名は「CommandButton1」になっていることが確認できます。
オブジェクト名を変更するには、プロパティウィンドウの「オブジェクト名」のところをクリックし、そのあとで値の部分を直接編集してください。例としてコマンドボタンのオブジェクト名を「cmdOK」に変更してみます。対象のコマンドボタンを一度クリックしてから、プロパティウィンドウの「オブジェクト名」の個所をクリックします。
右側に表示されている値を「cmdOK」に直接編集します。
オブジェクト名を変更することができました。なおオブジェクト名には英数字、漢字、アンダーバーなどが利用できます。ただし先頭はアルファベットや漢字など文字でなければなりません。
テキストボックスのオブジェクト名も「txtName」に変更しました。
コントロールに表示される文字列とオブジェクト名は別のものなのでご注意ください。デフォルトではオブジェクト名と同じ文字列がデフォルトの値としてコントロールに表示されていることが多いですが、コントロールに表示される文字列の設定は Caption
プロパティで設定します。
オブジェクト名をプログラムの中で使用する
先ほどコントロールのオブジェクト名を変更しましたが、 VBA を使ったプログラムの中でオブジェクト名がどのように使われるのか簡単なサンプルを作ってみます。
ユーザーフォームに設置したコマンドボタンの上で右クリックし、表示されたメニューの中から「コードを表示」をクリックしてください。(コントロールをダブルクリックしても同じ結果になります)。
コードウィンドウに次のように表示されます。
コマンドボタンをクリックしたときに実行する処理を Private Sub CmdOK_Click()
から End Sub
までの間に記述します。今回は次のように記述しました。
Private Sub cmdOK_Click() Range("B2").Value = txtName.Value End Sub
ここでそれぞれのコントロールに設定したオブジェクト名が使用されます。 cmdOK
オブジェクトがクリックされたら txtName
オブジェクトに入力された値を取得し、 B2 セルに代入します。結果としてボタンがクリックされたらテキストボックスに入力された値を B2 セルに代入します。
このようにプログラムの中で各コントロールを識別するときに使用される名前がオブジェクト名となりますので、どのオブジェクトなのか分かりやすいオブジェクト名を設定されるようにしてください。
それでは実際に実行してみます。「実行」をクリックし、表示されたメニューの中から「Sub/ユーザーフォームの実行」をクリックしてください。
Excel のワークシートにユーザーフォームが表示されます。
テキストボックスに名前を入力し、そのあとでボタンをクリックしてください。
B2 セルにテキストボックスに入力した名前が代入されました。
-- --
Excel のプロパティウィンドウを使ってユーザーフォームやコントロールのオブジェクト名を変更する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。