NO.11 ワークシートでコンボボックスを使用する

データの入力に文字列一覧からマウスで選択するだけで済めば楽ですしミスの発生率も低くすることが出来ます。 そのような入力があるときはコンボボックスを使用します。

なお、選択する項目が不変なコンボボックスの場合はVBAで作成するまでも無いのでNO.4 セルをコンボボックスにするを参照してください。

コンボボックスの作成

ワークシート上へ配置できるコンボボックスには2種類あります。 まずは、表示(V)-ツールバー(T)を見てください。 コントロールツールボックスフォームのツールボックスにそれぞれのコンボボックスがあります。 今回はコントロールツールボックスの中にあるコンボボックスを使用します。 それは、このコントロールツールボックスはVBAで作成するユーザーフォームでの使い方と同様のためです。

コンボボックス

コンボボックスを貼り付けるにはNO.2 セル間の計算を行うの中の実行ボタンを作成する方法を参考にしてください。

VBAの作成例

コンボボックスへ編集する文字列を設定する方法は2通りあります。 まず1つ目は、シートに編集されている文字列をそのまま一覧表示させます。 もう一つは、シート以外にある文字列をリスト一覧表示させる方法です。 この2通りの方法は、その処理内容により使い分けすれば良いと思います。 なお、コンボボックスのオブジェクト名はcoSyozokuとして説明します。

作成するモジュール
シートに編集されている文字列
      ・
      ・
coSyozoku.Style = fmStyleDropDownCombo
coSyozoku.ListFillRange = "data!B2:B6"
coSyozoku.ListIndex = -1
      ・
      ・

シート以外にある文字列
      ・
      ・
coSyozoku.Style = fmStyleDropDownCombo
coSyozoku.ListFillRange = ""
coSyozoku.Clear
coSyozoku.AddItem "文字列1"
coSyozoku.AddItem "文字列2"
coSyozoku.AddItem "文字列3"
coSyozoku.ListIndex = -1
      ・
      ・

シートより設定

あらかじめシートに設定してある文字列をコンボボックスのリスト一覧へ表示する方法です。

VBAの説明
coSyozoku.Style = fmStyleDropDownCombo
コンボボックスの選択方法を設定します。
fmStyleDropDownComboは直接キー入力可能でありリスト一覧に無い内容でも入力することができます。
fmStyleDropDownListは直接キー入力することができずリスト一覧に無い内容は入力できません。
coSyozoku.ListFillRange = "data!B2:B6"
コンボボックスへdataとういシート名のB2からB6のセルに保存してあるデータを設定します。
coSyozoku.ListIndex = -1
コンボボックスを選択されていない状態にします。何故-1かと言いますとリスト一覧の先頭は0からカウントされるためです。

シート以外より設定

シート以外に設定してある文字列をコンボボックスのリスト一覧へ表示する方法です。

VBAの説明
coSyozoku.Style = fmStyleDropDownCombo
シートより設定と同一
coSyozoku.ListFillRange = ""
セル内容が設定してある場合はあらかじめ削除しておきます。なお、セル内容を使用していない場合は必要ありません。
coSyozoku.Clear
設定内容をクリアします。
coSyozoku.AddItem "設定したい文字列"
リスト一覧したい文字列を必要な数だけ追加設定します。そのために、この前でcoSyozoku.Clearが必要になります。
coSyozoku.ListIndex = -1
シートより設定と同一

選択された内容を得る

コンボボックスで選択された内容を得る2つの方法を説明します。

VBA説明
coSyozoku.ListIndex 選択されている文字列の最初を0としたIndex(順番)を返します。 そのため-1は選択されていない状態を示します。 リスト一覧で設定されているデータがシートの行列で作成されている場合にはこの順番を示すインデックスは便利です。
coSyozoku.Value 選択されている文字列を返します。

どちらの方法を使用するかはVBAで行う処理により使い分ければ良いでしょう。

作成日:2003/03/31 更新日:2005/04/10

| HOME | INDEX | | |