このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】コンボボックスの使い方(ユーザーフォーム)

2024年7月31日

今回はユーザーフォームのコンボボックスの使い方を紹介します。

コンボボックスの追加方法から選択肢の追加方法まで画像付きで説明するので活用してみてください。

この記事では↓の項目が分かります。

  • コンボボックスの追加方法
  • 選択肢の追加方法
  • リストに無い項目の入力を許可するか
  • 初期値の設定方法
  • 選択された値の取得方法
  • コンボボックスとリストボックスの違い

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

コンボボックスの追加方法

コンボボックスは画像のようにツールボックス中のアイコンをクリックすることで追加ができます。

追加するとプルダウンの付いたコントロール(コンボボックス)が追加されます。

選択肢の追加方法 (Listプロパティ / AddItemメソッド)

選択肢の追加方法は2つがあります。

  1. Listプロパティ:選択肢を配列で一度に追加できます。
  2. AddItemメソッド:選択肢を1つずつ追加できます。

基本的に↓のように使い分けするのが良いと思います。

  1. ユーザーフォームの表示前に選択肢を追加したい⇒Listプロパティ
  2. ユーザーフォームの表示後にユーザーの操作によって選択肢を追加したい⇒AddItemメソッド

選択肢を配列で追加する (Listプロパティ)

Private Sub UserForm_Initialize()
    Dim arr
    arr = Array("選択肢1", "選択肢2", "選択肢3")
    ComboBox1.List = arr
End Sub

Listプロパティを使うと配列を使って選択肢を一気に追加することができます。

ユーザーフォームを表示する前に選択肢をセットするときにはこの方法がおすすめです。

サンプルコードではUserForm_Initializeプロシージャで一気に選択肢を追加しています(UserForm_Initializeはユーザーフォームを表示する前に自動的に実行されるプロシージャです)

Array関数を使うと作成も修正も簡単に済ませることができます。

選択肢を1つずつ追加する (AddItemメソッド)

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "選択肢1"
    ComboBox1.AddItem "選択肢2"
    ComboBox1.AddItem "選択肢3"
End Sub

選択肢を1つずつ追加するにはAddItemメソッドを使います。

ユーザーフォームを表示した後、ユーザーの操作で選択肢を追加したりするときはこの方法を使います。(例えばボタンを押したら選択肢追加など)

選択肢の追加を禁止するか (Styleプロパティ)

コンボボックスでは選択肢の追加を禁止させることができます。
(デフォルトでは手入力で選択肢を追加することができます)

Styleプロパティの値を画像のようにfmStyleDropDownListにすると、選択肢の追加を禁止にできます。

初期値の設定方法 (Valueプロパティ)

Private Sub UserForm_Initialize()
    Dim arr
    arr = Array("選択肢1", "選択肢2", "選択肢3")
    ComboBox1.List = arr
    ComboBox1.Value = arr(0)
End Sub

初期値の設定にはValueプロパティを使用します。

ユーザーフォームを表示したときにValueプロパティで指定した値が初期候補として表示されます。

選択された値の取得方法 (Valueプロパティ)

Private Sub CommandButton1_Click()
    MsgBox ComboBox1.Value 'コンボボックスの値をメッセージで表示
End Sub

選択された値の取得にもValueプロパティを使います。

画像のようにコンボボックスの他にコマンドボタンを追加します。

そしてサンプルコードのCommandButton1_Clickプロシージャを追加します。

この状態でユーザーフォームを実行すると、ボタンを押すとコンボボックスの値がメッセージボックスで表示することができます。

コンボボックスとリストボックスの違い

コンボボックスは選択肢が隠れている (プルダウン式)のに対して、リストボックスは選択肢が表示された状態になります。

また、コンボボックスは手入力による選択肢の追加ができますが、リストボックスではできません。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/11/23 15:08:04時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい