HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > ComboBoxの項目を動的に変更する - Listプロパティー

即効テクニック

ユーザーフォーム関連のテクニック

ComboBoxの項目を動的に変更する - Listプロパティー

(Excel 97/2000)
コンボボックスの項目を追加するにはAddItemメソッドやListプロパティー、ListFillRangeプロパティー(シート上)、RowSourceプロパティー(UserForm上)などがあります。このうちList,ListFillRange,RowSourceを用いた場合、コードからこれらのプロパティーの設定値を変更することで動的に項目を変更できます。
サンプルでは2つのコンボボックスを用意し、1番目の値が変更された時に2番目のコンボボックスにあらかじめ配列で用意しておいた値を設定します。
具体的には、1つ目のコンボボックスで製品分類を選び、選択された値によって2つ目のコンボボックスの商品名リストを変更します。

(前提) コンボボックス2個(ComboBox1,ComboBox2)
'======モジュールレベル変数======
Private varProduct, varOffice, varOS

'====== 商品分類選択 ======
Private Sub ComboBox1_Change()

With ComboBox2

Select Case ComboBox1.Value
    
    Case "Office"
        .List = varOffice
    Case "OS"
        .List = varOS

End Select

.ListIndex = -1

End With

End Sub

'====== リスト項目の格納と設定 ======
Private Sub Worksheet_Activate()

varProduct = Array("Office", "OS")
varOffice = Array("エクセル", "アクセス", "パワーポイント", "ワード")
varOS = Array("Windows95", "Windows98", "WindowsNT", "Windows2000")

ComboBox1.List = varProduct

End Sub
※サンプルではリスト項目の設定をシートのActivateイベントで行っていますが、適宜Workbook_Openなどへ変更してください。