機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > 機能と数式

ワークシートでリストボックスを使う



ワークシート上でリストボックスを使うには次のようにします。

コントロールの配置 - Excel 2003まで -


[表示]メニューの[ツールバー]をポイントして[フォーム]をクリックします。



実行すると[フォーム]ツールバーが表示されます。



配置したいコントロールのボタンをクリックしてから、ワークシート上でドラッグします。







コントロールの配置 - Excel 2007以降 -


リボンに[開発]タブが表示されていないときは、次のようにして、[開発]タブが表示されるようにします。

(1)[Office]ボタンをクリックします


(2)右下の[Excelのオプション]ボタンをクリックします


(3)[基本設定]グループの[[開発]タブをリボンに表示する]チェックボックスをオンにします



[開発]タブが表示されたら、[開発]タブを開きます。
[コントロール]グループ[挿入]ボタンをクリックして[リストボックス]ボタンをクリックします。



リストボックスを配置したい位置をドラッグすると、リストボックスが配置されます。





リストボックスのデータを登録する


ここからはExcel 2010の画面で解説します。Excel 2003以前のバージョンでも同じです。なお、ここでは、下図のように、リストボックスに表示したいデータがA列に入力されているものとします。



まず、挿入したリストボックスを右クリックします。



[コントロールの書式設定]をクリックします。



実行すると[コントロールの書式設定]ダイアログボックスが表示されます。



[入力範囲]ボックス内をクリックしてから、データが入力されているセル範囲A1:A12をドラッグします。実行すると、[入力範囲]ボックスに「$A$1:$A$12」と入力されます。もちろん、このアドレスを手入力してもかまいません。



次に、[リンクするセル]ボックス内をクリックして、任意のセルをクリックします。ここでは、セルB8とします。このセルに「リストボックスで何番目のデータが選択されているか」の数値が入力されます。



[選択の種類]グループで「単一選択」が選択されているのを確認して、[OK]ボタンをクリックします。なお、ここでは[3-D表示]もオンにしました。

[コントロールの書式設定]ダイアログボックスを閉じると、リストボックスが選択状態になっていますので、Escキーを押すか、任意のセルをクリックして選択を解除します。これで準備は完了です。リストボックスでデータを選択すると、[リンクするセル]で設定したセルに「リストボックスで何番目のデータが選択されているか」を表す数値が入力されます。



選択された項目を調べる


[リンクするセル]で設定したセルには「リストボックスで何番目のデータが選択されているか」を表す数値が入力されます。ここから「どの項目が選択されたか」を調べるには関数を使います。いろいろな方法がありますが、たとえば次のようにINDEX関数で取得できます。



ほかにも、いろいろな方法が考えられます。INDIRECT関数を使うのなら



OFFSET関数でもできますね。



下図のように、あらかじめデータの左列に連番を入力しておけば、みんな大好きVLOOKUP関数でも可能です。



元のデータが入力されている範囲は、あらかじめわかっています。そして、リストボックスが「何番目のデータ」かを返してくれるのですから、それが何のデータかを調べるのは簡単です。

応用例と注意事項


上の例では、リストボックスと元データが同じワークシート上にありましたが、もちろん別のワークシートを利用することも可能です。こうすれば「何番目のデータが選択されたか」のセルが見えなくなりますので、レイアウト的にもグッドですね。

(1)Sheet1に、リストボックスに表示する元データを入力しておきます。リストボックスを配置するのはSheet2です


(2)Sheet2のリストボックスに対して、[入力範囲]を「Sheet1!$A$1:$A$7」、「リンクするセル」を「Sheet1!$B$1」とします


(3)Sheet2に配置したリストボックスには、Sheet1の元データが表示されます。また、リストボックスで選択したデータ番号はSheet2のセルB1に入力されます


(4)さて、Sheet2には下図のように適当なデータを入力しておきましょう。これから、このデータを使ってグラフを作ります


(5)グラフに表示するデータを、リストボックスで切り替えられるようにします。こんなときは、元のデータ(ここでは、セル範囲C1:F8)からではなく、別にグラフ用のデータを生成してやるといいです。元データの下に、下図のような数式を入力します。セルC11に「=INDEX(C2:C8,Sheet1!$B$1)」と入力して、右方向にセルF11までコピーしてください


(6)あとは、このグラフ用のデータから好きなグラフを作れば完了です。ここでは円グラフにしてみました


(7)グラフを上に移動して、グラフ用のデータを隠します



(8)リストボックスで選択すると、その月のグラフが表示されます





(9)もう一工夫しましょうか。リストボックスで選択されたデータを、元のリストで強調します。これには条件付き書式を使います。まず、元のリスト全体を選択します。このときアクティブセルがセルC2になるように選択してください。これは、次の条件付き書式を設定するときに重要なポイントになります


(10)Excel 2003までなら[書式]-[条件付き書式]をクリックして[条件付き書式の設定]ダイアログボックスを開き、「数式が」で「=ROW-1=Sheet1$B$1」と設定します。セルの背景色は適当に決めてください


Excel 2007以降でしたら[ホーム]タブ-[条件付き書式]-[新しいルール]をクリックして[新しい書式ルール]ダイアログボックスを開き「数式を使用して、書式設定するセルを決定」を選択します。[次の数式を満たす場合に値を書式設定]ボックスに「=ROW-1=Sheet1$B$1」と設定します。セルの背景色は適当に。


(11)これで、リストボックスで選択されたデータがわかりやすくなりました





さて、最後に重要な注意事項です。ワークシート上に配置したリストボックスでは[複数選択]と[拡張選択]は使えません



設定して、実際に複数の項目を選択することは可能ですが、それを調べる方法がありません。[リンクするセル]には1つの数値しか返らないからです。


[フォーム]ツールバーで提供されるコントロール群は、もともとExcel 5.0/95のダイアログシートで使用するコントロールです。



[複数選択]と[拡張選択]で選択された複数項目は、VBAで調べるしか手はなく、ワークシート関数で判定することはできません。

ちょっと詳しく書いたら、思いの外に長くなってしまいました(^^;
ワークシート上でリストを表示するには、ほかにも方法があります。詳しくは「ワークシート上でリスト入力」をご覧ください。




このエントリーをはてなブックマークに追加