こんにちは、Ryoです。
ユーザーフォームのコンボボックスはリストを設定しておけば入力の手間が省けるので利用する機会も多いと思います。そのコンボボックスで表示させる値や文字など、選択することが多いものがあれば初期値(既定値)として予め指定することも可能なので、今回はその方法について書いていきます。
1.サンプル概要
今回はサンプルとして以下のフォームを作成します。「UserForm1」を作成して「ComboBox1」と「CommanButton1」をフォーム上に設置した簡易的なものになります。
配置したコマンドボタン1をクリックすることで、コンボボックスに項目が追加され、既定値として設定した値が表示されます。
このコンボボックスに表示させる値(文字列)として、今回は音楽ジャンルをリストインデックスとして追加しています。内容は「クラシック」「エレクトロニカ」「ポップス」「ジャズ」「ロック」で、既定値として「エレクトロニカ」を表示させます。
このように予め設定した値を表示させることが可能です。
また、ユーザーフォームが起動した時点で表示させておくことも可能なので、その方法などについても書いていきます。
2.サンプルコード
Private Sub CommandButton1_Click() 'コマンドボタン1をクリックし処理を実行 Dim Gen_data As Variant Dim Gen As Variant 'コンボボックスに表示する値(文字)を配列に代入 Gen_data = Array("クラシック", "エレクトロニカ", _ "ポップス", "ジャズ", "ロック") '配列の内容に対して順次処理を実行 For Each Gen In Gen_data '配列内の値(文字)をコンボボックスに追加 ComboBox1.AddItem Gen Next '2番目の値を規定値にする ComboBox1.ListIndex = 1 '※ ListIndexの既定値は「-1」=未選択なので、 ' 「0」が先頭、「1」が2番目...の順になります。 End Sub
コンボボックスに表示する値や文字列の既定値を指定するにはListIndexプロパティを使用します。
構文:オブジェクト.ListIndex = num
このプロパティの既定値は「-1」で、この-1は「未選択の状態」なので指定する番号は「0→先頭」「1→2番目」「2→3番目」…となっており、本サンプルは2番目の文字列「エレクトロニカ」を既定にするので「1」を指定しています。
サンプルコード内容としては、コンボボックスに表示したい文字列を配列に代入(Array)し、その代入した内容をコンボボックスに追加(ConboBox1.AddItem)しています。
Gen_data = Array(“クラシック”, “エレクトロニカ”, _
“ポップス”, “ジャズ”, “ロック”)
For Each Gen In Gen_data
ComboBox1.AddItem Gen
Next
配列データをコンボボックスに追加完了後、既定値として設定したい値が2番目なので、ListIndex に1を指定します。
ComboBox1.ListIndex = 1
◆参考:ユーザーフォーム起動時点で表示させる
上述サンプルは「コマンドボタン1」をクリックすることで処理が実行されますが、用途によってはユーザーフォーム起動時点で表示させたいこともあるかと思います。
そのような場合はフォームを表示する前に初期設定を行えるようにPrivate Sub UserForm_Initialize()として記述すれば、ユーザーフォームが表示された時点で処理が既に実行されていますので、このようになります。
Private Sub UserForm_Initialize() '※ユーザーフォーム表示時点でコンボボックスに ' 規定値を表示させたい場合はUserForm_Initialize() Dim Gen_data As Variant Dim Gen As Variant Gen_data = Array("クラシック", "エレクトロニカ", _ "ポップス", "ジャズ", "ロック") For Each Gen In Gen_data ComboBox1.AddItem Gen Next ComboBox1.ListIndex = 1 End Sub
3.まとめ
実際にコンボボックスなどを用いて日常的に利用していると、毎回同じ項目を選択していたりすることに気付くものです。
コンボボックスの端を押して、リスト表示させて選択して…ほんの数秒のことですが、ユーザー側の視点で考えれば毎回意味もなく同じことを選択するような作業要素が発生してしまうと苦痛に感じるものなので、今回のサンプルのように予め設定しておくことも良いかと思います。
以上、コンボボックスに既定値を設定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo