「あぁ…また取引先の名前に『株式会社』を入れ忘れた…。たった一文字のミスで書類を作り直しなんて、もう嫌だ!」
職場ではこんな声が聞こえてくることがあります。
特に、顧客名や商品名などの「決まった項目」を手入力するのは、ミスの温床です。そんな時、私たちの強い味方になるのがExcel VBAの「ComboBox(コンボボックス)」です。
これはいわば、ファミレスの注文タブレットのようなものです。決められたメニューから選ぶだけの状態にすれば、打ち間違いを完全に防ぐことができます。
今回は、初心者の方でも今日からすぐに使える「リスト追加」の方法を、ステップ別に分かりやすく解説していきます。
一番簡単!プロパティウィンドウで設定(コード不要)
プログラミングに少し苦手意識がある方は、まずはこの方法から試してみるのがおすすめです。
- ユーザーフォーム上のコンボボックスを選択します。
- 画面左下の「プロパティ」にある「RowSource」という欄を探してください。
- そこに「Sheet1!A1:A5」のように、リスト化したいデータが入力されているセル範囲を指定します。



これだけで、シートにあるデータが自動的にコンボボックスのリストに反映されます。とても簡単な操作ですが、これも立派な業務効率化の大きな一歩になります。
柔軟性抜群!AddItemメソッドを使う(基本のコード)
「特定の条件の時だけ項目を増やしたい」といった柔軟な制御を行いたい場合は、VBAのコードを記述します。
※先ほどの「RowSource」を使う手法を試された方は、まず「RowSource」を空欄に戻しましょう。エラーになります。
Private Sub UserForm_Initialize()
' フォームが開くときにリストを追加します
' Withを使うと、ComboBox1という名前を何度も書かなくて済むので楽ちんです
With ComboBox1
.AddItem "営業部" ' リストに「営業部」を追加
.AddItem "事務部" ' リストに「事務部」を追加
.AddItem "開発部" ' リストに「開発部」を追加
End With
' 使用頻度が高い項目を初期値に設定しておくと、一手間省ける機会が増えます
ComboBox1.ListIndex = 0 ' 0番目(営業部)を最初から選択状態にする
End Sub

実は私も、このAddItemを知らなかった頃に、全ての項目を力技でシートに書き出してRowSourceで繋いでいました。
後から項目が増えるたびにシートをいじるのが面倒で…。このコードを知った時は「なんてスマートなんだ!」と感動したのを覚えています。
大量データも一瞬!List プロパティで配列を使う
「100個も200個もAddItemなんて書いてられない!」という場合は、セル範囲のデータを丸ごと一瞬で流し込む方法が有効です。
Private Sub UserForm_Initialize()
' A1セルからA100セルまでのデータを一気にリストにします
' RowSourceと似ていますが、コード内で制御できるので見やすいです
ComboBox1.List = Range("A1:A100").Value
End Sub
頻繁に変更が発生する項目は、この方法のようにセルから動的に読み込む形にしておくのがおすすめです。VBAの知識がない同僚の方でも、シートの文字を書き換えるだけで簡単にメンテナンスができるようになります!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント