【エクセルVBA】ユーザーフォームにコンボボックスを追加する方法


ユーザーフォーム,コンボボックス

皆様こんにちは、ノグチです。

ユーザーフォームを作って使ってみるまでを目標にして、連載記事でコントロールのメソッドやプロパティ、イベントをご紹介しています。

前回の記事では、リストボックスのListプロパティで、複数列の値をセットする方法をご紹介しました。

今回はユーザーフォームでよく使われる、コンボボックスをフォームに追加して、プロパティを設定していってみましょう!

コンボボックスとは

まずは、コンボボックスの見た目のご紹介から。

コンボボックスは、こんな見た目をしたコントロールです。

ユーザーフォーム,コンボボックス,見た目

ユーザーフォームでちょっとしたツールを作りたい時によく使われるコントロールではないでしょうか。

リストボックスは、予めセットした値をリスト形式で表示してくれましたが、表示された値を選択することはできても、テキストを入力することはできませんでしたよね。

コンボボックスは、予めセットした値をリスト形式で表示したり、テキストを入力したりすることができるコントロールです。

ユーザーフォームにコンボボックスを追加する

コンボボックスをユーザーフォームに追加してみましょう。

追加するユーザーフォームはこちら。

ユーザーフォーム,リストボックス追加

これまでの連載記事でコントロールを追加してきた、「MyForm」というフォームです。

こちらのフォームにコンボボックスを追加するには、VBEでツールボックスを開いて、コンボボックスのアイコンをクリックします。

ユーザーフォーム,コンボボックス,ツールボックス

そしてコンボボックスを追加したい場所をフォーム上でドラッグすると…

ユーザーフォーム,コンボボックス,追加

こんな感じで、コンボボックスを追加することができます。

コンボボックスを追加するため、予め隣のテキストボックスの幅を少し狭めておきました。

ツールボックスが表示されていない!という方は、こちらの記事を参考になさってくださいね。

【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
エクセルの便利機能、ユーザーフォームの作り方と使い方を、連載記事でご紹介しています。今回は、ユーザーフォームにラベルやテキストボックスといったコントロールを追加する方法と、作成したユーザーフォームをワークシートから呼び出す方法をご紹介しています。

コンボボックスのプロパティ

コンボボックスを追加できたら、お次はプロパティを設定していきましょう。

本稿ではコンボボックスのプロパティの中から、いくつかピックアップしてご紹介していきます。

プロパティシートを開く

プロパティを設定するために、コンボボックスのプロパティシートを開いてみましょう。

フォーム上に追加したコンボボックスを右クリックして、現れたメニューから「プロパティ」をクリックします。

すると、このようにコンボボックスのプロパティシートが表示されます。

ユーザーフォーム,コンボボックス,プロパティシート

このシート上で、プロパティを設定していきましょう。

オブジェクト名を変更する

フォームやテキストボックス同様、コンボボックスもオブジェクト名を変えることができます

デフォルトでは自動的にComboBox1のようなオブジェクト名になっていますが、VBAで操作するときにわかりやすいように、判別し易い名前にしておくとよいでしょう。

今回は、「CmbUnit」というオブジェクト名に変えておきます。

ユーザーフォーム,コンボボックス,オブジェクト名

入力した文字からリスト内を検索してくれる:MatchEntryプロパティ

コンボボックスでは、入力したテキストがリスト内にあるかを検索することができます。

このプロパティは、入力したテキストから部分検索、完全一致のどちらにするのか、また、そもそも検索をさせないという3パターンの設定から選択することができます。

このプロパティに設定する値は、以下のいずれかです。

設定値 動作
0 – fmMatchEntryFirstLetter 部分検索
1 – FmMatchEntryComplete 完全一致検索
2 – FmMatchEntryNone 検索をしない

たとえばプロパティの設定値を「0 – fmMatchEntryFirstLetter」にしていた場合。

こちらのコンボボックスに「パ」と入力して…

ユーザーフォーム,コンボボックス,matchentry

エンターキーを押すと、このように入力した値にマッチする値をリストから検索して、自動的に表示してくれます。

ユーザーフォーム,コンボボックス,matchentry,結果

リスト内にある文字だけを入力させる:MatchRequiredプロパティ

MatchRequiredプロパティは、テキスト入力された値が、コンボボックスのリスト内に存在しているかをチェックしてくれるプロパティです。

設定値はTrueかFalseのいずれかで、Trueを設定した場合、リスト内に無い値をテキストボックスに入力すると、このようなメッセージが表示されます。

ユーザーフォーム,コンボボックス,matchrequire

メッセージは表示されるものの、テキストには自由な値が入力できますので、チェック機能として使うことができるかもしれません。

ただし、メッセージの文面が分かりにくいのが難点ですね。

こちらのプロパティに「False」を設定すれば、メッセージが表示されることなく、自由な値を入力することができます。

コントロールをどう使うかを決める:Styleプロパティ

Styleプロパティは、コンボボックスをコンボボックスとして使うか、ドロップダウンリストとして使うかを設定するプロパティです。

設定値は以下のいずれかです。

設定値 動作
0 – fmStyleDropDownCombo コントロールをコンボボックスとして使用する
1 – fmStyleDropDownList コントロールをドロップダウンリストとして使用する

コンボボックスはリストボックスとテキストボックスを足したようなコントロールなのですが、Styleプロパティで「1 – fmStyleDropDownList」を設定すると、テキスト入力ができなくなり、リストからの選択のみできるようになります。

コンボボックスをドロップダウンリストとして使うことができるようになるということですね。

「0 – fmStyleDropDownCombo」を設定すれば、テキスト入力もリストからの選択も両方できる、コンボボックスとして使用することができますよ。

最後に

今回は、コンボボックスをユーザーフォームに追加する方法と、代表的なプロパティをご紹介しました。

コンボボックスは、ユーザーフォームではよく使われる、便利なコントロールです。

次回は、この便利なコンボボックスに値をセットしていってみましょう。

それでは最後までお読みいただきありがとうございました!

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法
  4. 【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう
  5. 【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう
  6. 【エクセルVBA】Initializeイベントでワークシートの値をユーザーフォームの初期値にセットする
  7. 【エクセルVBA】AfterUpdateイベントでテキストボックス同士を連動させてみよう
  8. 【エクセルVBA】コマンドボタンのClickイベントでワークシートを更新してみよう
  9. 【エクセルVBA】ユーザーフォームのリストボックスを使ってみよう!
  10. 【エクセルVBA】リストボックスのRowSourceプロパティの値を変動させてみよう!
  11. 【エクセルVBA】AddItemメソッドでリストボックスに値を追加してみよう!
  12. 【エクセルVBA】リストボックスのListプロパティで複数列の値を更新する

 

  投稿者プロフィール

ノグチフリーランスPG・SE
元製造子会社SE。
業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。

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