本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL]二つのリスト ボックスを連動させる方法

文書番号: 402457

最終更新日: 1997/10/23


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP402457

概要

本文書は、Microsoft(R) Visual Basic(R) Programming System Applications Edition (以下 VBA) を使用して、ダイアログ シートに作成した二つのリスト ボックスを連動させる方法をサンプル モジュールと共に解説しています。

詳細

二つのリストボックスを連動させるには、いくつかの方法があります。ここでは ListBox オブジェクトの ListFillRange プロパティを使用する方法を解説します。

ワークシート Sheet1 のセルに次のように入力します。A 列は一つめのリスト ボックス ("リスト 4") に表示するデータです。選択した項目によって、それぞれのデータに対応した別のリストを二つめのリスト ボックス ("リスト 5") に表示します。
  __|____A____|____B____|____C____|_______D_______|
   1|文房具   |バインダ |文庫     |マウス         |
   2|書籍     |色鉛筆   |専門書   |ディスプレイ   |
   3|OA 機器  |筆箱     |図鑑     |コンピュータ   |
  • "リスト 4" で「文房具」が選択されたら、 "リスト 5" に B 列のデータを表示する
  • "リスト 4" で「書籍」が選択されたら、 "リスト 5" に C 列のデータを表示する
  • "リスト 4" で「 OA 機器」が選択されたら、"リスト 5" に D 列のデータを表示する
次に、ダイアログ シートにコントロールを配置し、マクロを登録します。<リスト 5>には、マクロの登録を行いません。
  +--------------------------------------------+
  |                 リスト選択             <---|---<フォーム 1> フォーム 1 Show
  +--------------------------------------------+
  |                                            |
  |  +-------+--+  +-------+--+    +---------+ |
  |  |       |↑|  |       |↑|    |    OK   | |
  |  |       |~~|  |       |~~|    +---------+ |
  |  |       |  |  |       |  |    +----------+|
  |  |       |__|  |       |__|    |キャンセル||
  |  |  ^    |↓|  |    ^  |↓|    +----------+|
  |  +--|----+--+  +----|--+--+                |
  +-----|---------------|----------------------+
        |               |
        |               +--------<リスト 5>
        +----------------------- <リスト 4> リスト 4 Change
各コントロールに登録するマクロは次の通りです。
マクロ "フォーム 1_Show" では、各リストの初期値を設定しています。このマクロは、ダイアログ フォームに登録します。
マクロ "リスト 4_Change" では、"リスト 4" でデータが選択された時に実行を開始します。このマクロは、リストボックス "リスト 4"にマクロ登録します。
  Sub フォーム 1_Show()
      DialogSheets("Dialog1").listboxes("リスト 4").ListFillRange = _
          "Sheet1!A1:A3"
      DialogSheets("Dialog1").ListBoxes("リスト 4").Value = 1
      DialogSheets("Dialog1").ListBoxes("リスト 5").ListFillRange = _
          "Sheet1!B1:B3"
  End Sub
  Sub リスト 4_Change()
      Dim selectindex As Integer
      Dim mydlg As Object
      Set mylist = DialogSheets("Dialog1").ListBoxes("リスト 5")
      selectindex = DialogSheets("Dialog1"). _
          ListBoxes("リスト 4").ListIndex
      Select Case selectindex
          Case 1
              mylist.ListFillRange = "Sheet1!B1:B3"
          Case 2
              mylist.ListFillRange = "Sheet1!C1:C3"
          Case 3
              mylist.ListFillRange = "Sheet1!D1:D3"
      End Select
  End Sub

Keywords: KBHOWTO KB402457
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system