目次
大規模なデータセットを扱う場合、そこから選択的な価値を取り出すことが難しくなることがよくあります。 しかも、複数の情報を同時に選択することはできません。 このような場合、以下のようになります。 リストボックス には、とても役立つソリューションです。 エクセル .しかし、この制作過程では リストボックス は少し厄介なので、この記事では、複数選択可能な リストボックス をエクセルで簡単に作成することができます。
練習用ワークブックをダウンロードする
練習用のサンプルファイルを取得します。
マルチセレクトリストボックス.xlsmExcelでマルチセレクトリストボックスを作成する手順
を分け、より簡単に行えるようにしました。 8 では、さっそく以下の手順で、複数選択可能な リストボックス をExcelで表示します。
ステップ1:データセットからExcelテーブルを作成する
まず、サンプルデータセットを用意し、それをテーブルに変換する必要があります。 そのためには、以下の手順で行います。
- の情報を持つデータセットをまず作成します。 10 都市名 とその 総人口 の 米国 まで 1, 7月 において セル範囲 B5:C14 .
- では、データセットの任意のセルをクリックして テーブル から インサート タブで表示します。
- そうすると テーブルの作成 ウィンドウで、自動的にセル範囲を選択して表を作成します。
- このウィンドウで、チェックしたマーク テーブルにはヘッダーがあります を押してください。 よっしゃー .
- その結果、データセットがテーブルに変換されるのがわかります。
- それとともに、テーブルの中にある テーブル名 の下にあるボックス テーブルデザイン タブ
- テーブル名はお好みで変更可能です。
続きを読む Excelで従属的なドロップダウンリストを作成する方法
Step 2: Name Managerからデータセットリストに名前を付ける
では、表から各カテゴリーのセル範囲に名前を付けます。 そのために、次のステップを踏みます。
- まず、以下の中から任意のセルを選択します。 B列 を表にしています。
- 次に 計算式 タブを選択し 名前の定義 .
- これに続いて、次のように表示されます。 新名称 ダイアログボックスを表示します。
- このダイアログボックスで、選択した列のヘッダーに応じた任意の名前を 名称 ボックスを使用します。
- 次に について言及しています。 ボックスを同じウィンドウに表示します。
- そして、ヘッダーにカーソルを合わせると、黒い矢印が表示されます。
- その後、左クリックを押しながら セル範囲 B5:B14 .
- その結果、テーブル名と一緒に名前のリストが について言及しています。 を押してください。 よっしゃー .
- についても、同じ手順で行います。 セルレンジ C5:C14 もあります。
- 最後に、名前を ネームボックス をワークブックの左上隅に配置します。
ステップ3:データバリデーション付きドロップダウンリストの作成
この段階では、データ検証を行いながら、指定した範囲からドロップダウンリストを作成します。 これは、以下のような方法で作成します。 リストボックス ここでは、ワークブック内の別のワークシートで作成します。 しかし、同じワークシートでも可能です。 以下、その手順を見てみましょう。
- はじめに、テーブルから適用したいセルをいくつか選択します。 データバリデーション .
- 次に データ タブを選択し データバリデーション において データツール のセクションをご覧ください。
- 次に 設定 タブを選択します。 リスト において 許可する ボックスを使用します。
- また、マークがチェックしたのは ブランクを無視する と インセルドロップダウン のボックスを使用します。
- その後 出典 をクリックすると、このウィンドウが表示されます。 F3 をキーボードで入力します。
- その結果 ペースト名 ダイアログボックスに名前リストが表示されます。
- ここでは、以下を選択します。 都市名 を押してください。 よっしゃー .
- すると、ソースボックスに最初のリストの名前が表示されるのがわかると思います。
- 最後に よっしゃー を実行し、2つ目の名前リストにも同じ処理を適用します。
- 最後に、以下のことがわかります。 データバリデーション が選択したセルに対して有効になります。
ステップ4:検証済みワークシートにVBAコードを挿入する
さて、肝心の挿入ですが ブイビーエー のコードで作成します。 リストボックス .以下はその手順です。
- まず、検証済みのワークシート上で右クリックし 表示コード から コンテキストメニュー .
- 次に、このコードをページ上に挿入します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rngDV As Range Dim oldVal As String Dim newVal As String Dim strList As String On Error Resume Next Application.EnableEvents = False Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation) On Error GoTo exitHandler If rngDV Is Nothing Then GoTo exitHandler If Not Intersect(Target, rngDV) Is Nothing Then If Target.Validation.Type = 3Then strList = Target.Validation.Formula1 strList = Right(strList, Len(strList) - 1) strDVList = strList frmDVList.Show End If End If exitHandler: Application.EnableEvents = True End Sub
- 次に インサート タブを選択し モジュール .
- このとき、ワークブック名が プロジェクト対象 ウィンドウに表示されます。
- 次に、モジュールの名前を次のように変更します。 modSettings をクリックし、このコードを挿入してください。
Option Explicit Global strDVList As String
ありがとうございました。 コンテクスト コードを提供していただきました。
ステップ5:リストボックスとボタンでUserFormを作成する
この段階で ユーザーフォーム と共に、ワークブック用の リストボックス および一部 コマンドボタン そのためには、以下の手順に従ってください。
- まず、ワークブックを プロジェクト-VBAProject のウィンドウが表示されます。 ビジュアルベーシック エディタがあります。
- 次に インサート タブを選択し ユーザーフォーム .
- その結果 ユーザーフォーム のようなインターフェースです。
- これと合わせて ツールボックス ウィンドウに表示されます。
- ここから、ドラッグ リストボックス になります。 ユーザーフォーム .
- その後 リストボックス はこのように表示され、ボックスの端をドラッグすることで大きさを調整することができます。
- 次に コマンボタン に、2回 ユーザーフォーム を追加し、操作用のボタンを2つ作成しました。
- 最後に、最終的な出力はこのようになります。
ステップ6: プロパティ設定の変更
この段階では、各コンポーネントのプロパティに変更を加えることで リストボックス .
- はじめに を押してください。 F4 について ビジュアルベーシック エディターで開きます。 プロパティウィンドウ .
- 次に、以下を選択します。 ユーザーフォーム を変更し 名称 と キャプション のようなものです。
- 次に、以下を選択します。 リストボックス を変更し 名称 は、お好みに合わせてお選びください。
- さらに リストスタイル , マルチセレクト と 特殊効果 を下の画像のように表示します。
- ここで、最初のコマンドボタンを選択し、プロパティで次のように変更します。
- さらに、2つ目のコマンドボタンのプロパティも編集します。
ステップ7:VBAコードをUserFormに適用する
この段階では、アプリケーション ブイビーエー の各コンポーネントに対するコードです。 ユーザーフォーム どうなるか見てみましょう。
- まず、以下を選択します。 ユーザーフォーム に行き、その 表示 タブで選択します。 コード .
- そして、このコードを白紙ページに挿入してください。 ユーザーフォーム が開かれる。
Private Sub UserForm_Initialize() Me.lstDV.RowSource = strDVList End Sub
- この後、再び ユーザーフォーム をクリックすると、インターフェイスが表示されます。 対象物 について 表示 タブで表示します。
- では、このコードを手順に沿って挿入してください。 よっしゃー ボタンをクリックします。
Private Sub cmdOK_Click() Dim strSelItems As String Dim lCountList As Long Dim strSep As String Dim strAdd As String Dim bDup As Boolean On Error Resume Next strSep = ", " With Me.lstDV For lCountList = 0 To .ListCount - 1 If .Selected(lCountList) Then strAdd = .List(lCountList) Else strAdd = "" End If strSelItems = "" Then strSelItems = strAdd Else if strAdd "" Then strSelItems = strSelItems_ & strSep & strAdd End If End If Next lCountList End With ActiveCell If .Value "" Then .Value = ActiveCell.Value _ & strSep & strSelItems Else .Value = strSelItems End If End With Unload Me End Sub
- これと同時に、次のコードを 閉じる ボタンを同じ手順でクリックします。
Private Sub cmdClose_Click() Unload Me End Sub
- 最後に Ctrl + S をクリックして保存し、ウィンドウを閉じます。
ありがとうございました。 コンテクスト コードに協力してくれた
ステップ8:リストボックスからのマルチセレクト
最後に、無事に リストボックス このコードが機能しているかどうかを確認するには、次の手順を実行するだけです。
- まず、以下を選択します。 セルB5 を適用したところ データバリデーション .
- その直後には リストボックス がポップアップで表示されます。 リストからの選択 .
- このウィンドウで、リストから複数の名前を選択します。
- 次に、 を押します。 よっしゃー .
- からのマルチセレクトに成功しました。 リストボックス で区切り、各名称は コンマ ( , ).
覚えておきたいこと
- 名前付きレンジ は作成されません。 データバリデーション ルールは、それらがセル参照として入力されるか、または区切り文字で入力された場合に適用されます。
- があります。 グローバル変数 の両方が適用されます。 ユーザーフォーム と ワークシートVBA アクティブなセル名はすべて、最初にコードを渡します。 strDVList を一時的に範囲指定し ロウソース に対して リストボックス を開くと ユーザーフォーム .
- 複数の範囲を一つの名前にまとめて、選択しやすくすることができます。
結論
以上、長々と書いてきましたが、いかがでしたでしょうか。 マルチセレクトリストボックスの作成 コメント欄でご意見をお聞かせください。 エクセルウィキ このような記事をもっと見る