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)

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

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

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

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

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

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

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

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

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

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

[コードの表示]をクリックし、コードウィンドウを表示させます。([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 ListBox1
        .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」として数えます。 省略するとリストの末尾に追加されます。

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

ListBox1.AddItem "サザエ"

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

Withステートメント

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

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

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

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

With ListBox1
    .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)
RowSourceプロパティを使って 複数列のセル範囲とリストボックスの値リストをリンク設定(Excel VBA)
リストボックスにListプロパティを使って配列に格納した複数列のセルデータを値リストとして設定(Excel VBA)
リストボックス 複数列の値リストの列幅を変えたり非表示にしたりする設定(Excel VBA)
リストボックスで選択しているデータがリストの上から何番目(インデックス値)かを取得(Excel VBA)
リストボックス 1列の値リストで選択しているデータをTextプロパティで取得(Excel VBA)
リストボックス 1列の値リストで選択しているデータをValueプロパティで取得(Excel VBA)
リストボックス 1列の値リストで選択しているデータをListプロパティで取得(Excel VBA)
リストボックス 複数列の値リストで選択しているデータを、列指定してTextプロパティで取得(Excel VBA)
リストボックス 複数列の値リストで選択しているデータを、列指定してValueプロパティで取得(Excel VBA)
リストボックス 複数列の値リストで選択しているデータを、列指定してListプロパティで取得(Excel VBA)

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