皆様こんにちは、ノグチです。
エクエルのユーザーフォームを作って使ってみることを目標に、連載記事でユーザーフォーム上のコントロールのプロパティやイベントをご紹介しています。
前回は、コマンドボタンのClickイベントで、ワークシートの値を、テキストボックスに入力されている値で更新する方法をご紹介しました。
ここまでテキストボックスに関係したイベントばかりをご紹介していましたので、今回からはリストボックスをご紹介していきたいと思います。
リストボックス編初回の今回は、ユーザーフォームにリストボックスを追加する方法と、よく使うプロパティをいくつかご紹介していきますよ!
前回までのおさらい
前回までに作成したユーザーフォームがこちら。
テキストボックスとラベルが2つずつと、コマンドボタンが1つ配置されていますね。
今までの記事では、この2つのテキストボックスを連動させたり、値をワークシートに転記してみたりしていましたが、今回はからは、画面の下側にあるテキストボックスをリストボックスに置き換えていきましょう。
リストボックスってどんなもの?
そもそもリストボックスってどんなものなの?というところから見ていきましょう。
リストボックスは、こんな見た目をしています。
テキストボックスのような見た目のコントロールに、値がリスト形式で並んでいますね。
リストボックスは、図のように表示したい値をリスト形式で表示して、入力者に任意の値を選択させることができるコントロールです。
フォームにリストボックスを追加する
まずは、フォームにリストボックスを追加していきましょう。
もともとあったテキストボックスは一旦削除しておいたので、フォームはこのようになっています。
では、もともとテキストボックスがあった場所に、リストボックスを追加してみましょう。
ツールボックスを開いて、リストボックスのアイコンをクリックします。
この通り、リストボックスがフォームに追加されます。
リストボックスの縦の大きさに合わせる為に、フォーム全体の縦の大きさも少し大きくしておきました。
ツールボックスが画面に表示されていない!という方は、こちらの記事で表示方法をご紹介していますので、併せてご覧ください。
リストボックスにオブジェクト名をつける
フォームやテキストボックス、リストボックスなどのコントロールは、任意のオブジェクト名を付けられるのでしたね。
プロパティシートの先頭にある、「(オブジェクト名)」という項目の値を変えれば、オブジェクト名の命名完了です。
今回追加したリストボックスには、「ListRegion」というオブジェクト名をつけました。
リストボックスのプロパティ
プロパティシートを見てわかるように、リストボックスにも多くのプロパティがあります。
今回追加したリストボックスを便利に使えるように、プロパティの設定をしていきましょう。
今回は、プロパティシートの中でもよく使うものをいくつかピックアップしてご紹介していきますよ。
リストボックスに表示させるワークシート上の範囲を指定する:RowSourceプロパティ
まずは、リストボックスに表示させる値を設定するプロパティ、RowSourceプロパティです。
例えば、こちらのリストのB列をリストボックスに表示させたい場合。
このRowSourceプロパティに「B2:B7」をセットすれば…
リストの値を複数選択させるかを設定する:MultiSelectプロパティ
お次は、リストボックスに表示されている値を、複数選択できるようにするかを設定する、MultiSelectプロパティです。
このプロパティに設定できる値と、それぞれの動作は以下の3通りです。
リストボックスの用途に合わせて、値の選択方法を選べますね。
設定値 | 動作 |
---|---|
0 – fmMultiSelectSingle | リストボックスの値を、1つだけ選択できるようにする |
1 – fmMultiSelectMulti | リストボックスの値を、Ctrlキーと左クリックで複数選択できるようにする |
2 – fmMultiSelectExtended | リストボックスの値を、マウスのドラッグで複数選択できるようにする |
リストボックスに表示する列数を設定する:ColumnCountプロパティ
リストボックスは、複数列にすることもできますよ。
この、ColumnCountプロパティの設定値に2以上の数値を設定すれば、リストボックスの列数を指定した数にすることができます。
リストボックスの何列目をValueプロパティの値にするかを設定する:BoundColumnプロパティ
ColumnsCountプロパティで2以上の値を設定した時に使うプロパティ、BoundColumnプロパティです。
このプロパティは、リストボックスのどの列を、このリストボックスのValueプロパティで取得できるようにするかを設定します。
例えば、ColumnsCountプロパティに3を、このBoundColumnsプロパティに1を設定した場合、リストボックスには3列のリストが表示されて、Valueプロパティでこのリストボックスの値を取得する際は、1列目の値が返されることになります。
プロパティだけ見ているとあまり関係ないような気がするプロパティですが、VBAで操作する際には重要になってきます。
最後に
今回は、ユーザーフォームのリストボックスをフォームへ追加する方法と、代表的なプロパティをご紹介しました。
リストボックスは、ユーザーフォームでマスタ管理画面を作りたいときなど、何かと便利に使えるコントロールです。
次回記事では、このリストボックスで選択された値の取得方法や、メソッドをご紹介していきますよ。
それでは、最後までお読みいただきありがとうございました!
連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!
ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。
何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。
- 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
- 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
- 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法
- 【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう
- 【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう
- 【エクセルVBA】Initializeイベントでワークシートの値をユーザーフォームの初期値にセットする
- 【エクセルVBA】AfterUpdateイベントでテキストボックス同士を連動させてみよう
- 【エクセルVBA】コマンドボタンのClickイベントでワークシートを更新してみよう
- 【エクセルVBA】ユーザーフォームのリストボックスを使ってみよう!
- 【エクセルVBA】リストボックスのRowSourceプロパティの値を変動させてみよう!
- 【エクセルVBA】AddItemメソッドでリストボックスに値を追加してみよう!
- 【エクセルVBA】リストボックスのListプロパティで複数列の値を更新する
- 【エクセルVBA】ユーザーフォームにコンボボックスを追加する方法
- 【エクセルVBA】コンボボックスに値をセットする2つの方法 RowSourceプロパティとAddItemメソッド