- コンボボックスとは何なのかを知りたい
- VBA(Excelマクロ)でコンボボックスを作成する方法を知りたい
- コンボボックスをカスタマイズしたい
このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。
- コンボボックスの概要について知れる
- VBA(Excelマクロ)でコンボボックスを作成する方法を学べる
- コンボボックスをカスタマイズする方法がわかる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
VBA(Excelマクロ)のコンボボックスとは?

コンボボックスとは、複数の選択肢から1つを選べる入力欄のことです。
Excelでは主に以下の2種類があります。
- ユーザーフォームに配置するコンボボックス
- シート上に直接配置するActiveXコントロールのコンボボックス
本記事では、ユーザーフォームのコンボボックスに焦点を当てて解説いたします。
コンボボックスの作り方

上図のように、コンボボックスから選択した項目が、ExcelのA1セルに書き込みされるマクロを作ってみましょう。
今回はわかりやすくするため、最もシンプルな作り方をお見せします。
手順は以下のとおりです。
- ユーザーフォームの呼び出し
- コンボボックスの設置
- コマンドボタンの設置
- コードの追加
- テスト実行
まずはユーザーフォームを呼び出しましょう。
ユーザーフォームの呼び出し
では、ユーザーフォームの呼び出しから始めます。
VBA Project画面の上部メニューから「挿入」→「ユーザーフォーム」をクリックします。
メニューの場所などは下記記事(図解付き)で解説しております。
関連記事{ユーザーフォームの作り方・基礎}
コンボボックスの設置
次に、コンボボックスを設置します。
画面左下「ツールボックス」の「コントロール」から、「コンボボックス」を
ユーザーフォームへドラッグ&ドロップします。

コンボボックスが設置できました。

この段階で、コードを表示させておきましょう。
画面左「プロジェクト – VBA Project」下の「コードの表示」をクリックしてください。

コードが表示されました。

このコードは、コンボボックスとボタン、セルを連動させるときに編集します。
現段階では使いませんので、「×」で閉じておきましょう。
コマンドボタンの設置
次にコマンドボタンを設置しましょう。
コンボボックスと同様に、「ツールボックス」の「コントロール」から、
「コマンドボタン」をユーザーフォームへドラッグ&ドロップします。


コンボボックスの時と同じように、コードを表示させましょう。

これでひとまずデザインは完成です。
では次に、コードを追加していきましょう。
コードを追加
初心者の方には少し難しい内容になりますので、最も簡単なコードで作成いたします。
現在、下図のようにコードが表示されているかと思います。

一番下に、下記のコードを追加してください。
Private Sub UserForm_Initialize() ' ユーザーフォーム起動時
ComboBox1.AddItem "野球" ' ComboBox1(コンボボックス)に「野球」を追加する
ComboBox1.AddItem "サッカー" ' 同じく「サッカー」を追加する
ComboBox1.AddItem "テニス" ' 同じく「テニス」を追加する
End Sub
下図は追加した見本です。

これで、ユーザーフォーム起動時に、各項目がコンボボックスに追加されます。
野球などの項目名や項目数は必要に応じて編集してください。
また、「ComboBox1」も環境に応じて変更する必要があります。
コンボボックスの名前を確認してください。
コンボボックスの名前は、コード内「Private Sub ComboBox1_Click()」を確認しましょう。
最後に、コマンドボタンを押した際の処理を書きます。
「Private Sub CommandButton1_Click()」の下に
「Range(“A1”).Value = ComboBox1.Text」と記述してください。

これでコンボボックスで選択した項目がExcelのA1セルに書き込みされるようになります。
繰り返しになりますが、「ComboBox1」は必要に応じて変更してください。
以上でコンボボックスは完成です。お疲れさまでした!
テスト実行をして動きを確認しましょう。
テスト実行
上部メニューの実行ボタンをクリックしてください。

コンボボックスが表示されました。

項目を選択し、コマンドボタン(CommandButton)を押してみます。


選択した項目が、無事A1セルに書き込みされました。成功です。
しかしながら、「CommandButton」のままでは、作りかけ感があります。
次項にて、コンボボックスのカスタマイズ方法を解説いたします。
コンボボックスのカスタマイズ
パーツのデザイン変更
パーツ(コンボボックスやコマンドボタンなど)の位置や大きさ、表示内容の変更が可能です。
- 位置の変更
- 大きさの変更
- 表示内容の変更
- 文字色・背景色の変更 など
詳細は下記記事で解説しております。
関連記事{ユーザーフォームの作り方(図解)}
下記にて簡単にやり方を紹介いたします。
【表示内容の変更】
表示を変更したいパーツをクリックします。
さらにもう一度クリックすると、表示を変更できるようになります。
【位置変更】
パーツの上下左右の輪郭にマウスカーソルを重ねます。
すると四隅に矢印が付いたカーソルに変化する場合があります。
この時、ドラッグすることで、パーツを移動させることができます。
【大きさ変更】
パーツの四隅にマウスカーソルを重ねることで、左右に矢印が付いたカーソルに変化する場合があります。
この時、ドラッグすることで、パーツの大きさを変えることができます。
ユーザーフォームを自動で閉じる
前項で紹介した方法では、コマンドボタンを押してもユーザーフォームが閉じられず、出っ放しになります。
なので、コマンドボタンを押したらユーザーフォームを閉じるコードを追加しましょう。
Unload UserForm1
上記VBAコードがユーザーフォームを閉じる記述です。
「UserForm1」はユーザーフォーム名に応じて変更してください。
下記のように、コマンドボタンを押したら実行される処理の最後に記述しましょう。
Private Sub CommandButton1_Click()
Range("A1").Value = ComboBox1.Text
Unload UserForm1
End Sub
繰り返しになりますが、「ComboBox1」は必要に応じて変更してください。
コードの種類
コンボボックスに項目を追加するコードについてです。
前項では、下記のコードを使いました。
Private Sub UserForm_Initialize()
ComboBox1.AddItem "野球"
ComboBox1.AddItem "サッカー"
ComboBox1.AddItem "テニス"
End Sub
書き方は他にもありますので、紹介いたします。
結果はすべて同じです。書きやすいコードを使ってください。
下記は「Withステートメント」といって、「ComboBox1」に対する指令をまとめたものです。
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "野球"
.AddItem "サッカー"
.AddItem "テニス"
End With
End Sub
各行の「ComboBox1」が省略され、2行目に記述されているのがわかるかと思います。
関連記事{Withの役割と使い方}
下記は項目を配列に入れた例です。
Private Sub UserForm_Initialize()
ComboBox1.List = Array("野球", "サッカー", "テニス")
End Sub
関連記事{配列とは?}
1行で収まるのでコードがスッキリします。
初期値の設定
前項で作成したコンボボックスを再度見てみましょう。

コンボボックス内が空欄になっています。
プルダウンを押すことで項目が出てくるのですが、なんかバグみたいですよね…。
そこで初期値を設定して、読み込み時に表示させるようにしてみましょう。
ComboBox1.Value = "★選択してね★"
追加するのは、ユーザーフォームを読み込んだ処理の中です。
Private Sub UserForm_Initialize()
ComboBox1.Value = "★選択してね★"
ComboBox1.AddItem "野球"
ComboBox1.AddItem "サッカー"
ComboBox1.AddItem "テニス"
End Sub
これで初期時が表示されます。


項目の複数選択は可能?
残念ながら、コンボボックスでは項目の複数選択はできません。
複数選択できるようにするには、コンボボックスではなくリストボックスにする必要があります。
下記記事で作り方や複数選択する方法を解説しておりますので、ご参考ください。
最後に
VBA(Excelマクロ)のコンボボックスについて解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!