目次
使用環境
- OS:Windows 10 Pro(バージョン:20H2)
- ソフト:Microsoft Excel VBA
経緯
ユーザーフォームにプルダウンメニュー(ComboBox)を設置し、
複数の選択肢を手間なく追加したいと考えました。
これまでは、
ComboBox1.AddItem "東京"
ComboBox1.AddItem "埼玉"
ComboBox1.AddItem "神奈川"
...
のように、1項目ずつ.AddItem
を繰り返して追加していたため、
選択肢が増えるたびにプログラムが冗長になり、管理も大変でした。
そこで今回は、Excelシートのセル範囲から一括で読み込んでComboBoxに追加する方法を学びました。
解決方法:Excelシートのセルから値を読み込んで追加する
コード例(Sheet1のH列から読み込んでComboBoxに追加)
Dim 最終行H As Long
Dim i As Long
最終行H = Worksheets("Sheet1").Cells(Rows.Count, 8).End(xlUp).Row
For i = 3 To 最終行H
ComboBox1.AddItem Worksheets("Sheet1").Cells(i, 8).Value
Next i
コード解説
- 1~2行目:変数
最終行H
(最終行番号)とカウンター変数i
を宣言します。 - 4行目:シート”Sheet1″のH列(列番号8)の最終行を取得します。
- 6行目:For文で、3行目から最終行まで繰り返します。
- 7行目:H列(列番号8)の値をComboBoxに1件ずつ追加します。
- 8行目:次の行に進みます。
※Range("H" & i)
と書いても問題ありませんが、
より正確にはCells(i, 8)
と「行・列」で指定する方法が推奨されます。
ポイントまとめ
- ComboBox1.AddItemを繰り返し使う必要がなくなり、コードがスッキリします。
- データ内容が変更された場合でも、シート上で修正するだけでOKになります。
- 都道府県リストや製品リストなど、大量のデータを管理するときに特に便利です。
まとめ
VBAでComboBoxに大量のデータを追加したい場合は、
- Excelシート上にリストを作成し
For
文で一括読み込み.AddItem
で追加
という流れにすることで、プログラムを美しく、管理しやすく保つことができます。
これにより、メンテナンス性も大幅に向上しました。
ここまでお読みいただき、誠にありがとうございました。