AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

【本日のミッション】

ユーザーフォームのコンボボックスにAddItemメソッドを使って値リストを設定せよ。

ミッションの概要

ユーザーフォームのコンボボックスに、AddItemメソッドを使って値リストを設定せよ、というのが今回のミッションです。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ユーザーフォームに コンボボックスを作る

ユーザーフォームを開く

画面左のプロジェクトエクスプローラーから、ユーザーフォームをダブルクリックして開きます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

コンボボックスを作るためのツールボックスを、下記方法で表示させます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ツールボックスを表示する方法1

[表示]-[ツールボックス]

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ツールボックスを表示する方法2

標準ツールバーの[ツールボックス]ボタンをクリックします。

標準ツールバーが表示されていない場合は、[表示]-[ツールバー]-[標準]で表示されます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

コンボボックスの作成

ツールボックスから「コンボボックス」ボタンをクリックします。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ユーザーフォームのコンボボックスを配置したい位置に、左上からクリックのまま右下までドラッグします。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ユーザーフォームにコンボボックスが作成されます。

左のプロパティウインドウを確認すると、このコンボボックスのオブジェクト名が「ComboBox1」ということが確認できます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ユーザーフォームの Initialize 処理で、コンボボックスの値リストを設定する

UserForm_Initialize に記述した処理は、ユーザーフォームが画面表示される時に行われます。ユーザーフォームに設置したオブジェクト(コンボボックス・リストボックス・テキストボックス等)で、

  • プルダウンを開いた時に出てきて欲しい値リスト
  • 初めから表示されていて欲しい選択リスト
  • テキストの初期値

等は、ユーザーフォームが開くと同時に設定されるようにしておきます。

今回は、ユーザーフォーム「frmMain」が画面表示される時に、コンボボックス「ComboBox1」に値リストが設定されるようにします。

ユーザーフォームのコードウィンドウを表示

プロジェクトエクスプローラーから、コンボボックスを設置しているユーザーフォームを右クリックします。

[コードの表示]をクリックし、コードウィンドウを表示させます。([F7]キーでもコード表示できます。)

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

UserFormの選択

コードウィンドウ上部の「(General)」と表示されているプルダウンを開き、「UserForm」を選択します。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

自動的に下記コードが挿入されますが、削除するとUserFormの選択が解除されるため、そのままにしておきます。
AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

Initializeの選択

右側のプルダウン(「Click」と表示されています。)を開き、「Initialize」を選択します。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

下記コードが表示されます。

ここで先ほどの「Private Sub UserForm_Click() ~ End Sub」は不要になりますので、削除しておきましょう。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

UserForm_Initialize にコードの追加

Private Sub UserForm_Initialize ~ End Sub 内に下記の通り、コードを追加します。

Private Sub UserForm_Initialize()
    With ComboBox1
        .AddItem "サザエ"
        .AddItem "カツオ"
        .AddItem "ワカメ"
    End With
End Sub

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

ユーザーフォームの実行

このコード内にカーソルを置いたまま、[F5]キーをクリックする(ユーザーフォームの実行)とユーザーフォームが表示されます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

コンボボックスの「▼」をクリックすると、先ほど設定した「サザエ」「カツオ」「ワカメ」が値リストとして表示されます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

今回は、[閉じる]ボタンを付けていないため[×]ボタンでユーザーフォームを閉じます。

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

AddItemメソッド

AddItemメソッドを使用すると、コンボボックスに値を追加することができます。

コンボボックスオブジェクト.AddItem [Item][Index]
引数名説明省略
Item値リストに追加する文字列を指定します。 省略すると空の項目が追加されます。×
Index新しい項目を挿入する位置を数字で指定します。 値リストの一番上の値を「0」として数えます。 省略するとリストの末尾に追加されます。

値を一つだけ追加する場合は、下記のようなコードになります。

ComboBox1.AddItem "サザエ"

AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)

Withステートメント

1つのオブジェクトに対して、複数のプロパティやメソッドを記述する際、Withステートメントを使用して、コードを簡略化することができます。

今回は ComboBox1 に対して、下記のような処理を指定するのですが

ComboBox1.AddItem "サザエ"
ComboBox1.AddItem "カツオ"
ComboBox1.AddItem "ワカメ"

Withステートメントを使うと、このように簡略化できます。

With ComboBox1
    .AddItem "サザエ"
    .AddItem "カツオ"
    .AddItem "ワカメ"
End Wit

【参考】

VBA(マクロ)作成の前、リボンに開発タブを表示させる(Excel VBA)
ユーザーフォームの作成方法 準備(Excel VBA)
ユーザーフォームのオブジェクトの名前を「UserForm1」から変更する方法(Excel VBA)
ユーザーフォームの上のバー(タイトルバー)の名前を「UserForm1」から変更する(Excel VBA)
ユーザーフォームのオブジェクトウィンドウとコードウィンドウを表示切替させる方法(Excel VBA)
「オブジェクト名が不正です」を出さないようにユーザーフォームオブジェクト名を命名規則に従って変更(Excel VBA)
エクセルファイルが開いた時にユーザーフォームを表示させる方法(Excel VBA)
エクセル フォームのラベルのテキストを縦書きにする方法(Excel VBA)
AddItemメソッドを使ってコンボボックスの値リストを設定する(Excel VBA)
RowSourceプロパティを使ってセル範囲とコンボボックスの値リストをリンク設定させる(Excel VBA)
RowSourceプロパティでリンク設定したコンボボックス値リストにデータを追加・削除する(Excel VBA)
コンボボックスにListプロパティを使って 配列に格納したセルデータを値リストとして設定する(Excel VBA)
既存のコンボボックスの値リストにAddItemメソッドでデータを追加する(Excel VBA)
既存のコンボボックスの値リストのデータを、Clearメソッドで全て削除して初期化する(Excel VBA)
既存のコンボボックスの値リストの項目を1件 RemoveItemメソッドで削除する(Excel VBA)
選択する項目の文字数に応じてコンボボックスのサイズ(幅・高さ)を自動変更する(Excel VBA)
コンボボックス 値リストに設定した項目以外は入力できないようにする(Excel VBA)
コンボボックス 値リストに設定した項目以外も入力できるようにする(Excel VBA)
コンボボックス プルダウンを開いた時の値リストの最大表示件数を指定する(Excel VBA)
コンボボックス ドロップダウンのポチってするところ(ドロップボタンスタイル)を▼から変更する(Excel VBA)
コンボボックス リストの中から初期値を設定するListIndexプロパティ(Excel VBA)
コンボボックスの値リストに設定された項目の件数を取得する(Excel VBA)
RowSourceプロパティを使って、複数列のセル範囲とコンボボックスの値リストをリンク設定(Excel VBA)
コンボボックスにListプロパティを使って配列に格納した複数列のセルデータを値リストとして設定(Excel VBA)
コンボボックス 複数列の値リストの列幅を変えたり非表示にしたりする設定(Excel VBA)
複数列の値リストからコンボボックスに表示する列・Textプロパティで値を取得する列を設定(Excel VBA)
コンボボックスに表示されている項目がリストの上から何番目(インデックス値)かを取得(Excel VBA)
コンボボックスの値リストに列見出しを表示する設定 ColumnHeadsで見出しが設定できない理由(Excel VBA)
コンボボックス ドロップダウンの▼(ドロップボタン)を表示・非表示にするタイミングを設定(Excel VBA)
コンボボックス 表面の形状を色々な立体的表示に変更する設定(Excel VBA)
コンボボックスの左端の余白「セレクションマージン」って何?この余白を無くす方法は?(Excel VBA)
コンボボックス値リストAddItemメソッド・RowSourceプロパティ・Listプロパティ違い Excel VBA
コンボボックス 値リストの表示項目件数を変更する設定(Excel VBA)
コンボボックスで選択した値を別フィールドにドラッグアンドドロップで簡単テキスト移動できる設定(Excel VBA)
コンボボックス 複数列ある値リストから表示されていない列のデータを取得する方法1(Excel VBA)
コンボボックス 複数列ある値リストから表示されていない列のデータを取得する方法2(Excel VBA)
コンボボックス TextプロパティとValueプロパティの違い(Excel VBA)
コンボボックスに重複しないユニークな値リスト(1列)を設定する(Excel VBA)
コンボボックスに重複しないユニークな値リスト(複数2列)を設定する(Excel VBA)
コンボボックスに重複しないユニークな値リスト(複数列 3列以上)を設定する(Excel VBA)

■■■スポンサーリンク■■■