Excelの初心者の頃は、何かとコンボボックスを作成したくなります。
次に、連動のコンボボックスですね。
しかし、凝りすぎると、コンボボックスは不便です。
目次
【Excel VBA】コンボボックスの作成は今すぐ禁止
こんにちは。伊川(@naonaoke)です。
Excelの初心者の頃は、何かとコンボボックスを作成したくなります。
次に、連動のコンボボックスですね。
しかし、凝りすぎると、コンボボックスは不便です。
今回は、コンボボックスに変わる方法を紹介します。
以前に、連動のコンボボックスの作成は、下記の記事で紹介しています。
参考にしてください。
連動コンボボックス作成には、様々な方法があります。
INDIRECT関数を利用する方法はやめた方がいいです。
これは、経験談です。
業者とかに、システムを発注しても、平気で、長いコンボボックスを作成してくるときがあります。
はっきり言いますが、こんなコンボボックスは、迷惑のなにものでもありません。
だから、社内システムは、処理を、知っている人が一番です。
このブログはこんな人にお勧め
- コンボボックスが、不便と思っている人
- 連動のコンボボックスを作成したいと思っている人
- コンボボックスを最強と思っている人
このブログを、読み終わるころには・・・・
私は、競馬をしていますが、競馬場の選択は、10行あります。
10行の中から、選択するのは、本当に不便です。
発送の転換と、少しの配列の知識で、作成可能です。
連動のコンボボックスに変わる手段
個人的な意見ですが、連動のコンボボックスを作成するは、結構、難しいです。
2連動なら、ネットに情報もありますが、5連動くらいになると結構しいです。
記事挿入
そして、エンドユーザーが、不便に感じると、文句ばかりということになります。
なので、感覚的に操作できる代用品が必要になります。
今回は、ユーザーフォームを利用することになります。
配列が、便利と感じる瞬間を、味わってください。
連動のコンボボックスに変わる手段 作業手順 その1 ユーザーフォームを作成する
こんな感じで、ユーザーフォームを作成します。
今回は、向かって右側が、空白になっています。
本来なら、このようになっています。
肝心なのは、1~6まで、順番に並べましょう。
この1~6までを、配列で、実装します。
連動のコンボボックスに変わる手段 作業手順 その2 配列のコード
ただこれだけのコードです。
配列に関しては、何度か説明しています。
この辺のコードに関しては、難しくないと思います。
連動のコンボボックスに変わる手段 作業手順 その3 テキストボックスに反映させる
このコードです。
難しいということはありません。
しかし、考え方としてですが、左辺は、TextBox1のみです。
右辺の処理だけが変わります。
このイベントの塊は、クラスモジュールで処理をした方が、効率が良いですね。
クラスモジュールを利用する場合は、このシーンを忘れないでください。
反対に、戻り値を利用する場合は、Functionを利用したほうが良いかとおもいます。
Functionの利用する場合は、空白判定等がいいと思います。
そのTextBox1は、空白という結果(戻り値)の場合に、どのような処理をするかということになるからです。
連動のコンボボックスに変わる手段 作業手順 その4 クラスモジュールは便利
インテリセンスが利用できます。
利用してみると、実際に便利です。
また、いちいち、指定する必要がないため、Caption、つまり、ボタンの見出しを利用するため、
その部分さえ変更すれば、TextBox1に反映されます。
ここがポイント
基本書でも、このようなことは、解説はしていません。
事実上、連動のコンボボックスを作成と、同等の役割をはたしています。
配列の知識は、必要かもしれませんが、エンドユーザーにとっては、この方法が、感覚的に操作可能で、利用しやすいと思います。
もっと、沢山のリストがあるなら、ユーザーフォームを分割すれば良いと思います。
まとめ
今回は、コンボボックスの代用について紹介しました。
もちろん、連動コンボボックスも重要です。
しかし、代用品もあることを、理解できていれば、臨機応変に対応することができます。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No282です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。