リストボックスを2列・複数列表示やセルに記載する方法
あらかじめ指定した複数の値の中から選択することができるリストボックス。
初期設定(デフォルト)では1列(1項目)だけの表示・選択なのですが、実は2列・3列と複数列にカスタマイズできるんです。
例えば、商品リストを選ぶ時に初期設定のままの場合は「商品名」だけですが、2列ならば「商品番号」と「商品名」をリスト化でき、それぞれ別々のセルに値を入力・取得もできるので活用してみませんか?
1つのリストボックスで2列や複数列表示
リストボックスプロパティで設定
列数の設定
ごく一般的なリストボックスの使い方としては1項目1列表示が基本で、リストボックスの初期設定になっています。
ひとつのリストボックスを2列以上の複数列で表示・使用するならば、まず最初にリストボックスのプロパティの中にあるColumnCountを変更するだけです。
セルの値を取得表示させる
次にどこのセルの値を2行のリストボックスに表示させるかですが、下記のようにRowSourceにセルの範囲を入力します。
そうすると、このように1つのリストボックスに2行表示できるようになります。
このままでもいいのですが、2列とも同じ幅ではなく左の番号の幅は少し狭くして、右側の文字の幅は広くしたい場合は列の幅を調整することができます。
列の幅を調整する
リストボックス内に2列表示している上記の図のような場合の、それぞれの列の幅はちょうど半分ずつに分かれています。
任意に列の幅を変更するには、下図のようにColumnWidthsを指定します。
いかがですか?
これでリストボックスに2列や複数列表示ができるようになりましたが、せっかくなのでプロパティでの設定ではなく、ユーザーフォーム自体にVBAコードを使って設定する方法も覚えておきましょう。
ユーザーフォームにVBAコードで設定
ここでは、ユーザーフォーム1が表示されると自動的にリストボックスに列数・列の幅・リストが設定されてから表示するようにVBAコードで書いています。
その為に、ユーザーフォームのInitializeイベントを使用していますので、Initializeの詳細については下記と重複するのでここでは省略します。
最初の行とか最初の列とかちょっとややこしいですが、このように3列の場合を例に表にするとわかりやすいです。
リストボックス | 最初の列 | 2列目 | 3列目 |
最初の行 | 0,0 | 0,1 | 0,2 |
2行目 | 1,0 | 1,1 | 1,2 |
3行目 | 2,0 | 2,1 | 2,2 |
4行目 | 3,0 | 3,1 | 3,2 |
これで、ユーザーフォームが開くと同時にリストボックスに登録したリストが3列で列幅も指定された幅でそれぞれ表示されるようになりました。
ただ表示されただけでは実用的ではないので、コマンドボタンにリストボックスで選択されたリストを指定されたセルに記載するようにVBAコードを書きましょう。
2行や複数行のリストをセルに記載する
では、実際にコマンドボタンを押したら指定したセルに指定したリストを記載できるようにしましょう。
リストが1列
初期設定のリストが1列の場合は指定したセル番号に選択されたリストが記載されます。
とてもシンプルですね。
ただこのままだと、リストを選択しないでコマンドボタンをクリックされてしまうとエラーになりますので、リストボックスのリスト未選択時のエラー回避VBAコードも追記しておくことをおススメします。
リストが2列
ではリストが2列あった場合には1列目と2列目どちらが記載されるのでしょう?
堪えは簡単で1列の時と同じようにVBAコードを書くと、リストボックスに2列だろうが、3列だろうが、自動的に1列目のリストがセルに記載されます。
そこで、VBAコードを書く時はリストボックスの何列目のリストをセルに記載するか指定する必要がありますので、下記のようにVBAコードを書けば解決です。
1列目のリストを指定
リストボックスにリストを登録した時と同様に、最初の列は「0」なのでリストも番号は0を指定することにより最初の列、つまり1列目が割り当てられます。
2列目のリストを指定
今度は2列目のリストを選択させるので、最初の列の1つ隣のリストとなるのでリスト番号は1を指定することにより2列目が割り当てられます。
3列目のリストを指定
次に3列目のリストを選択させるので、最初の列の2つ隣のリストとなるのでリスト番号は2を指定することにより3列目が割り当てられます。
このように、List(ListBox1.ListIndex, ※※)、※※の部分に最初の列から何列隣のリストかを数えて数字を記載すれば、リストボックスの任意の列をセルに記載させるか簡単にできるようになります。
また、このようにすれば1列目をA1に2列目をB1にそれぞれ同時に記載できます。
リストの中から選んでもらうリストボックスを使って、もっと作業効率を上げて仕事を速く終わらせませんか?
- セルの値をリストボックスに反映する
- セルの範囲を自動取得する方法
- RowSorceを自動更新
- リストボックス内を2列表示や選択リストをセルに記載
- リストを追加する
- リストを削除する
- 任意の項目を選択状態にしてリストボックス表示する
- リスト選択だけでセルに自動記載
- リストボックスでよくあるエラー表示の対処法
- 複数行選択できるように設定変更
- 複数行選択して別々のセルに表示・記載
- リストボックス登録フォーム作成しよう
- リストボックスとコンボボックスの違い