【VBA】コンボボックスの使い方ガイド(ドロップダウンリストの作成と値の取得)

目次

はじめに

VBAのユーザーフォームで、部署名や商品カテゴリなど、あらかじめ決められた選択肢の中からユーザーに一つを選んでもらう場合、「コンボボックス」コントロールが非常に便利です。コンボボックスは、クリックすると選択肢がドロップダウン形式で表示されるため、フォームの省スペース化にも繋がります。

この記事では、コンボボックスに選択肢のリストを設定し、ユーザーが選んだ項目を取得するという、一連の基本的な使い方を分かりやすく解説します。


コンボボックスの設定と値の取得サンプルコード

このマクロは、2つの部分で構成されます。

  1. UserForm_Initialize: フォームが表示される際に、コンボボックスに選択肢のリストを設定し、初期値を表示します。
  2. OKButton_Click: 「OK」ボタンが押されたときに、コンボボックスで選択されている項目の値を取得し、アクティブセルに書き込みます。

ユーザーフォームのコード

' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()
    With Me.DepartmentComboBox
        ' .ListプロパティにArray関数で配列を渡し、リスト項目を設定
        .List = Array("人事部", "総務部", "営業部", "開発部", "経理部")
        
        ' .ListIndexプロパティで、初期選択項目を設定(0はリストの1番目)
        .ListIndex = 0
        
        ' .Styleプロパティで、ドロップダウンリスト形式(編集不可)に設定
        .Style = fmStyleDropDownList
    End With
End Sub

' 「OK」ボタン(OKButton)がクリックされたときの処理
Private Sub OKButton_Click()
    ' .Valueプロパティで選択されている項目の値を取得し、セルに書き込む
    ActiveCell.Value = Me.DepartmentComboBox.Value
    
    ' フォームを閉じる
    Unload Me
End Sub

実行前の準備

  1. ユーザーフォームを作成します。
  2. フォーム上に「コンボボックス」と「コマンドボタン」を配置します。
  3. コンボボックスの (Name)DepartmentComboBox に、コマンドボタンの (Name)OKButton に変更します。
  4. フォームのコードモジュールに上記のコードを貼り付け、フォームを表示して使用します。

コード(プロパティ)の解説

.List = Array(...)

コンボボックスに表示する項目のリストを設定します。Array関数を使って作成した配列を、.List プロパティに直接代入するのが最も簡単な方法です。

.ListIndex = 0

リストの中で、最初に選択された状態にしておく項目をインデックス番号(0始まり)で指定します。0 を指定すると、リストの1番目の項目(この例では “人事部”)が初期値として表示されます。何も選択させたくない場合は、-1 を設定します。

.Style = fmStyleDropDownList

コンボボックスのスタイルを設定します。

  • fmStyleDropDownList: ドロップダウンリスト形式になります。ユーザーはリストからしか選択できず、自由なテキスト入力はできません。選択肢を固定したい場合に最適です。
  • fmStyleDropDownCombo: ドロップダウンリストに加え、ユーザーが直接テキストを入力することも可能になります(デフォルト)。

ActiveCell.Value = Me.DepartmentComboBox.Value

ユーザーが選択した項目の値を取得するには、.Value プロパティ(または .Text プロパティ)を使います。OKButton_Click() の中で、選択された部署名をアクティブセルに書き込んでいます。


まとめ

今回は、ユーザーフォームのコンボボックスを使って、ドロップダウンリストを作成し、選択された値を取得する基本的な方法を解説しました。

  • .List プロパティに配列を代入して、選択肢を設定する。
  • .ListIndex プロパティで、初期表示する項目を決める。
  • .Style プロパティで、ユーザーによる自由入力を許可するかどうかを決める。
  • 選択された値は .Value プロパティで取得する。

コンボボックスは、限られたスペースの中で多くの選択肢をユーザーに提示できる、非常に優れたコントロールです。ぜひマスターして、使いやすいフォーム作成に役立ててください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次