Excel VBA リストボックスのリストの追加と削除する方法

コントロール作成/操作

Excel VBAのユーザーフォームに登録するリストボックスのリストの追加と削除する方法についてご説明します。

リストボックスは複数のテキストを登録し、その中から選択できる機能のコントロールです。

セル範囲をリストに登録したり、1つしか選択できないように指定したり、複数選択可能にしたり、また、選択したリストを取得するなどが可能です。

そのリストボックスのリストの追加と削除についてです。

リストボックスのコントロールの追加方法や詳細設定、サンプルコードについては「リストボックス追加とリスト作成、詳細設定の方法」をご覧ください。

1.リストの追加方法

リストボックスのリストにテキストを追加するには、「AddItem」メソッドを使用します。

また、「RowSource」プロパティを使用するとセル範囲をまとめて追加する事が可能です。

AddItemメソッド

AddItem」メソッドの場合は次のように記述します。

AddItem(Item,[Index])

Item」には追加したい文字列を指定します。

Index」は追加したい位置を指定しますが、省略可能で省略した場合は末尾に登録されます。

RowSourceプロパティ

RowSource」プロパティの場合は次のように記述します。

ComboBox1.RowSource = "Sheet1!A1:A4"

RowSource」プロパティにシート名とセル範囲を指定します。

設定したリスト項目を変更する場合、その参照先に指定した範囲のセルの値を変更する必要があります。

リストの範囲を変更する場合は、セルの参照範囲も変更します。

「RowSource」で追加した場合は「AddItem」、「Clear」、「RemoveItem」メソッドで追加や削除は行えませんので注意が必要です。

そのため特に理由がない場合はAddItemメソッドで追加する事をおすすめします。

2.追加のサンプルコード

リストにItemを追加する方法をいくつかサンプルコードでご説明します。

「UserForm1」に追加した「ListBox1」を操作します。

UserForm1を表示するコードは次のように記述します。

Sub Sample()

UserForm1.Show vbModeless

End Sub

直接リストを追加する

コード上でリストを追加する方法です。

Sub Sample1()

With UserForm1.Controls("ListBox1")
    
    .AddItem "りんご"
    .AddItem "みかん"
    .AddItem "ぶどう"
    .AddItem "スイカ"

End With

End Sub

セルのデータをリストに追加する

セルの値をリストに追加する方法です。

Sub Sample2()

Dim i      As Long

With UserForm1.Controls("ListBox1")
        
    For i = 1 To 4
    
        .AddItem Cells(i, 1).Value
    
    Next i

End With

End Sub

RowSourceプロパティでセル範囲を追加する

「”Sheet1!A1:A4″」とシートとセル範囲を指定します。

ただし、「RowSource」で追加した場合は「AddItem」、「Clear」、「RemoveItem」メソッドで追加や削除は行えません。

Sub Sample3()

With UserForm1.Controls("ListBox1")
        
    .RowSource = "Sheet1!A1:A4"

End With

End Sub

配列からリストを追加する

配列を用意して、配列をリストに追加する方法です。

Sub Sample4()

Dim i           As Long
Dim MyArray()   As Variant

ReDim MyArray(0 To 3)
MyArray(0) = "りんご"
MyArray(1) = "みかん"
MyArray(2) = "ぶどう"
MyArray(3) = "スイカ"

With UserForm1.Controls("ListBox1")
        
    For i = 0 To 3
    
        .AddItem MyArray(i)
    
    Next i
    
End With

End Sub

2.リストをすべて削除する方法

リストを削除するには、「Clearメソッド」を使用します。

次のように記述します。

ListBox1.Clear

リストボックスのリストを削除するサンプルコードです。

Sub Sample5()

With UserForm1.Controls("ListBox1")
    
    'すべて削除する
    .Clear

End With

End Sub

3.リストの一部を削除する

リストの一部を削除する場合は「RemoveItem」メソッドを使用します。

削除するリストはインデックス番号で指定します。

インデックスは0から始まります。

次のように記述します。

ComboBox1.RemoveItem 0

リストの一部を削除するサンプルコードです。

指定したリストのインデックスが存在しない場合はエラーとなりますので、ご注意ください。

Sub Sample6()

With UserForm1.Controls("ListBox1")
    
    '2つ目(インデックス1)を削除する
    .RemoveItem 1

End With

End Sub
タイトルとURLをコピーしました