環境:Office365 Windows10
様々なサイトでVBAの解説はされていると思いますが、ところどころ端折っていたり、専門用語が書いてあったりで結局わからない。。という人の為の解説記事です。
ユーザーフォームのコンボボックスについて超丁寧に解説しますので、初心者の方はぜひ全部読んでみてください。
コンボボックスについての前置き
VBAのユーザーフォームにおけるコンボボックスは、ユーザーが選択肢から1つの項目を選ぶための重要なコントロールです。この記事では、初心者向けにVBAユーザーフォームでのコンボボックスの基本的な使い方と機能について解説します。
前回の記事はこちら
静的な選択肢と動的な選択肢の設定方法
例えばこのような選択肢を用意します。
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/e8d6c31652929d11899d126083cd3cad.png)
静的、動的とは?
まず1列目、「食べ物」を選択し、
1列目の「野菜」が選択されたら2列目、「お菓子」が選択されたら3列目を参照するようにします。
このようにユーザーの選択肢によって表示させる中身を変更することを動的といいます。
逆に中身を変化させないことを静的と表現します。
では上記のExcelを元にコンボボックスを作成してみましょう
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/63c89de513289bb38da3644d7a809b9e.png)
こちらです。
ではプログラムをしていきます。
先にオブジェクト名を
食べ物種類:ComboBox1
カテゴリー:ComboBox2
となっています。
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/300f0366dbbbc91a89045842619e712e.png)
まずはComboBox1は動的な変化はありませんので初期値の値が入るInitialize()へ記述します。
ここの内容は前回解説していますのでもしここを詳しくということであればこちらです。
では次に処理するのはComboBox1を選択した場合の処理です。
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/5262c4396a1d522f011d566547d621ab.png)
「If」文を使用することによって処理を分けています。
ちなみに「ComboBox2.Clear」を書いておかないと追加追加で選択肢が追加されていきます。なのでIFの処理は入る前にComboBox2の中身を削除して初期化しているのです。
では実行してみます。
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/93ab46b4dbac886462e25619b11d54d7-1.png)
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/d643232dbd3347f52b764120271ccb7d.png)
コンボボックスで選択された項目の取得方法
では次にコンボボックスに入力されたデータを入手します。
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/273bff6a53a98041384ae5ecfba4a982.png)
先程のユーザーフォームにボタンを追加します。
ボタンを押したときの処理がこちら
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/4a09da6ab49aa702841e0314ce56d0be-1.png)
コンボボックスが空だった場合は処理をしないようにしています。
データが入力されている場合のみ、データを変数へ入れています。
変数の中身をExcelへ入力しています。
空の場合は空白がセルへ入力されます。
![](https://www.white-gush-blog.com/wp-content/uploads/2023/06/ba31a3bcad7b4dfda256cb9a6b00b02e.png)
結論:
VBAのユーザーフォームでのコンボボックスの使用方法を理解することは、使いやすく柔軟に使用者とのやり取りを作成するための項目です。
コンボボックスを適切に設定し、選択肢を提供することで、使用者に直感的で効率的な操作を提供できます。
さまざまな選択肢の設定やイベントの処理方法をマスターすることで、より使いやすい入力システムを作成し、VBAの能力を最大限に活用しましょう。ぜひ実際にVBAユーザーフォームでコンボボックスを試してみてください。
コメント