コンボボックスの利用

複数の項目の中からユーザーに選択してもらうのに使用するコンボボックスの利用方法について解説します。

(2022 年 06 月 17 日公開 / 2022 年 06 月 17 日更新)

コンボボックスを作成する

コンボボックスを作成する方法を見ていきます。コンボボックスを作成するにはツールボックス上で下記のアイコンをクリックします。

コンボボックスを作成する(1)

アイコンをクリックした後でフォーム上でマウスをドラッグしてコンボボックスを作成します。

コンボボックスを作成する(2)

コンボボックスを作成する(3)

オブジェクト名の設定

VBAから操作するにあたってコンボボックスのオブジェクト名を設定しておきます。コンボボックスのプロパティウィンドウを見てください。

コンボボックスを作成する(4)

オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「foodsCombo」に変更します。

コンボボックスを作成する(5)

コンボボックスに項目を追加する

コンボボックスに表示する項目を追加する方法を確認します。項目を追加するには「AddItem」メソッドを使います。

Variant = object.AddItem [ item [, varIndex]]

リストに項目を追加します。 object には設定するオブジェクトを指定します。 1 番目の引数である item には追加する項目または行を指定します。1 番目の項目または行には 0 を、2 番目の項目または行には 1 を指定します。 2 番目の引数である varIndex には新しい項目または行を挿入するオブジェクトの位置を示す整数値を指定します。

コンボボックスに追加したい項目及び必要であれば項目の位置を表すインデックスを指定して項目を追加します。位置を指定しない場合は末尾に追加されます。

実際の使い方としては次のようになります。

sampleForm.foodsCombo.AddItem "項目"

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.foodsCombo.AddItem "りんご"
    sampleForm.foodsCombo.AddItem "オレンジ"
    sampleForm.foodsCombo.AddItem "メロン"
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

コンボボックスに項目を追加する(1)

コンボボックスの右側にある下矢印をクリックすると値の一覧が表示され値を選択することが出来るようになります。

コンボボックスに項目を追加する(2)

コンボボックスに項目を追加する(3)

コンボボックスに項目を追加する(4)

コンボボックスで選択された項目を取得する

コンボボックスで選択された値、または入力された値を取得する方法を確認します。まず選択された項目のインデックス番号を取得します。インデックス番号を取得するには「ListIndex」プロパティを使います。

object.ListIndex = Variant

現在選択されている項目を返します。値を設定することで選択する項目を指定することも出来ます。 object には設定するオブジェクトを指定します。設定する値である Variant にはコントロールで、現在選択されている項目を示します。

項目のインデックス番号は一番上の項目が「0」です。選択されていない場合には「-1」が返ります。

使い方はリストボックスの場合と基本的には同じなのですが、コンボボックスに登録されている項目を選択するのではなく新しい値を入力した場合は「ListIndex」プロパティの値は「-1」となります。何も選択していない場合と同じ「-1」となりますので注意して下さい。

次に指定したインデックス番号の項目を取得します。項目を取得するには「List」プロパティを使います。

object.List( row, column )

指定した行と列のリストの項目を返します。 object には設定するオブジェクトを指定します。 1 番目の引数である row には 0 以上で、リストの項目数から 1 を引いた数以下の整数値を指定します。 2 番目の引数である column には 0 以上で、列の数から 1 を引いた数以下の整数値を指定します。

行と列を指定して項目を取得します、列があるのはリストボックスでは複数列の表示も可能な為です。行及び列の値は先頭が「0」から開始されます。

またインデックスが「-1」の場合には何も選択されていないか、新しい値が入力されている場合です。コンボボックスのテキスト部分に入力された値を取得するには「Text」プロパティを使います。

object.Text [= String]

テキスト部分の値の設定又は取得を行います。 object には設定するオブジェクトを指定します。設定する値である String にはテキストを表す文字列式を指定します。既定値は、長さ 0 の文字列 ("") です。

実際の使い方としては次のようになります。

Private Sub getButton_Click()
    Dim index As Integer
    
    index = sampleForm.foodsCombo.ListIndex
    If index = -1 Then
        MsgBox sampleForm.foodsCombo.Text
    Else
        MsgBox sampleForm.foodsCombo.List(index)
    End If
End Sub

サンプルプログラム

では簡単なサンプルで試してみましょう。ボタン(オブジェクト名はgetButton)を1つ追加してClickイベント処理を記述します。

Private Sub getButton_Click()
    Dim index As Integer
    
    index = sampleForm.foodsCombo.ListIndex
    If index = -1 Then
        MsgBox sampleForm.foodsCombo.Text
    Else
        MsgBox sampleForm.foodsCombo.List(index)
    End If
End Sub

また呼びだすマクロは次の通りです。

Sub テスト()
    Load sampleForm
    sampleForm.foodsCombo.AddItem "りんご"
    sampleForm.foodsCombo.AddItem "オレンジ"
    sampleForm.foodsCombo.AddItem "メロン"
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。コンボボックスに登録されている項目を1つ選択して下さい。

コンボボックスで選択された項目を取得する(1)

コンボボックスで選択された項目を取得する(2)

項目を選択した状態で「値の取得」ボタンをクリックすると現在選択されている項目をダイアログで表示します。

コンボボックスで選択された項目を取得する(3)

次にコンボボックスに新しい値を入力してから「値の取得」ボタンをクリックすると次のように表示されます。

コンボボックスで選択された項目を取得する(4)

コンボボックスで選択された項目を取得する(5)

コンボボックスに新しい値の直接入力を禁止する

コンボボックスは値の選択の他に直接値を入力することもできますが、値の入力は出来なくする方法を確認します。コンボボックスの値の選択方法を指定するには「Style」プロパティを使います。

object.Style [= fmStyle]

値の選択方法または設定方法を設定します。 object には設定するオブジェクトを指定します。設定する値の fmStyle には値の設定方法を指定します。

設定可能な値は次の通りです。

定数選択方法
fmStyleDropDownCombo0編集領域に値を入力したり、選択項目のリストから値を選択することができます。
fmStyleDropDownList2リストボックスとして機能します。リストから値を選択しなければなりません。

デフォルトの値は「fmStyleDropDownCombo」です。直接入力を禁止したい場合には「fmStyleDropDownList」を設定します。

実際の使い方としては次のようになります。

sampleForm.foodsCombo.Style = fmStyleDropDownList

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.foodsCombo.AddItem "りんご"
    sampleForm.foodsCombo.AddItem "オレンジ"
    sampleForm.foodsCombo.AddItem "メロン"
    sampleForm.foodsCombo.Style = fmStyleDropDownList
    sampleForm.Show
End Sub


			

コンボボックスに新しい値の直接入力を禁止する(1)

プロパティウィンドウで値を指定する

「Style」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Style」の箇所の右側にある下矢印をクリックして値を選択します。

コンボボックスに新しい値の直接入力を禁止する(2)

-- --

複数の項目の中からユーザーに選択してもらうのに使用するコンボボックスの利用方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。