2 つのリストボックスを連動する
左のリストで分類を選ぶと、右のリストの候補を入れ替える連動フォームを作ります。
実行前に確認
- 新規フォームの両リストのRowSourceは空欄で使います。分類を切り替えると右側の以前の選択は失われます。
- コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。
1サンプルコード
'【貼付先:UserForm1 のコードモジュール】
Option Explicit
Private Sub UserForm_Initialize()
Me.ListBox1.MultiSelect = fmMultiSelectSingle
Me.ListBox1.AddItem "飲み物"
Me.ListBox1.AddItem "文具"
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Change()
Me.ListBox2.Clear
If Me.ListBox1.ListIndex < 0 Then Exit Sub
Select Case CStr(Me.ListBox1.List(Me.ListBox1.ListIndex, 0))
Case "飲み物"
Me.ListBox2.AddItem "お茶"
Me.ListBox2.AddItem "水"
Case "文具"
Me.ListBox2.AddItem "ノート"
Me.ListBox2.AddItem "鉛筆"
End Select
End Sub図で見る分類から候補を絞る
イメージ図左のリストで分類を選ぶと、右のリストの候補を入れ替える連動フォームを作ります。
分類
左で「文具」を選ぶ
消去
右の古い候補をClear
追加
文具の候補だけをAddItem
各操作は、このガイドに指定されたフォームのコードで行います。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。
- 2
ツールボックスからListBoxを2個(ListBox1、ListBox2)を横にを置き、各コントロールの[(Name)]が記載どおりか確認します。
- 3
UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。
- 4
VBEでUserForm1を選び、F5でフォームを表示します。 左側で「文具」を選び、次に「飲み物」へ戻します。
- 5
右側が「ノート・鉛筆」、続いて「お茶・水」に切り替わります。