複数選択のドロップダウン リスト

Excel シートの従来のドロップダウン リストは優れていますが、提示されたセットから XNUMX つのオプションしか選択できません。 これはまさにあなたが望むものですが、ユーザーが選択できるようにする必要がある状況もあります 一部 リストからの要素。

このような複数選択リストの典型的な実装をいくつか見てみましょう。

オプション 1. 水平

ユーザーがドロップダウン リストから項目を XNUMX つずつ選択すると、変更中のセルの右側に項目が表示され、自動的に水平方向に一覧表示されます。

この例のセル C2:C5 のドロップダウン リストは、標準的な方法で作成されます。

  1. セル C2:C5 を選択
  2. タブまたはメニュー 且つ チームを選ぶ データ検証
  3. 開いたウィンドウで、オプションを選択します リスト 範囲指定 ソース リスト A1:A8 のソース データを含むセル

次に、シート モジュールにマクロを追加する必要があります。これにより、すべての主要な作業が行われます。つまり、選択した値が緑色のセルの右側に追加されます。 これを行うには、ドロップダウン リストのあるシート タブを右クリックし、コマンドを選択します。 ソースコード. 開いた Visual Basic エディター ウィンドウに次のコードを貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset) (0, 1)) = 0 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

必要に応じて、このコードの 2 行目にあるドロップダウン リスト C5:CXNUMX の機密範囲を独自のものに置き換えます。

オプション 2.垂直

以前のバージョンと同じですが、新しく選択された値は右側ではなく下部に追加されます。

これはまったく同じ方法で行われますが、ハンドラー マクロ コードがわずかに異なります。

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:F2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset) (1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

ここでも、必要に応じて、このコードの 2 行目にある C2:FXNUMX ドロップダウン リストの機密範囲を独自のものに置き換えます。

オプション 3. 同じセルに蓄積する場合

このオプションでは、ドロップダウン リストが配置されているセルと同じセルで累積が行われます。 選択された要素は、任意の文字 (コンマなど) で区切られます。

緑色のセルのドロップダウン リストは、以前の方法と同様に、完全に標準的な方法で作成されます。 繰り返しますが、すべての作業はシート モジュールのマクロによって行われます。

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Intersect(Target, Range("C2:C5")) が何もなく、Target.Cells.Count = 1 の場合、Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal then Target = Target & "," & newVal Else Target = newVal End If Len(newVal) = 0 then Target.ClearContents Application.EnableEvents = True End Ifエンドサブ  

必要に応じて、コードの 9 行目の区切り文字 (コンマ) を独自の文字 (スペースやセミコロンなど) に置き換えることができます。

  • Excelシートのセルに簡単なドロップダウンリストを作成する方法
  • コンテンツ付きのドロップダウン リスト
  • 不足しているオプションが追加されたドロップダウン リスト
  • マクロとは、マクロの使用方法、Visual Basic でマクロ コードを挿入する場所

コメントを残す