目次
状況によっては、ドロップダウンリスト内で複数の値を選択する必要があります。 このチュートリアルでは、ドロップダウンリストで複数選択を行う方法を紹介します。 このセッションでは、Excel 2019を使用していますが、お好みのバージョンを使用して自由に感じなさい。
セッションに入る前に、例のベースとなるデータセットについて知っておきましょう。
ここでは、いくつかの文房具の要素を使用して、ドロップダウンリストを作成し、そこで複数の項目を選択することにします。
これは単純なデータセットであることに注意してください。 実際のシナリオでは、もっと大規模で複雑なデータセットに遭遇することがあります。
練習用ワークブック
練習用ワークブックは、下記リンクからダウンロードしてください。
ドロップダウン・リストから複数選択する.xlsm
ドロップダウン・リストでの複数選択
まずは、文房具をベースにドロップダウンリストを作成する必要があります。 さっそく作ってみましょう。 ドロップダウンリストの作り方については、こちらの記事をご覧ください。
での データバリデーション ダイアログボックスで リスト のデータ型で、項目のセル範囲を挿入します。
B4:B11 は、文房具の要素を保持する範囲です。 ここで、ドロップダウンリストを見つけます。
続きを読む 選択範囲に応じたExcelのドロップダウンリスト
1.複数項目の選択(重複選択可)
従来のドロップダウンリストでは、常に1つの項目が選択されます。 ここでは、次のように選択されています。 ペン をリストから選択します(下図)。
ここで、別の項目を選択すると、例えば ペンシル
であれば、前の値に置き換わります。 ペンシル が選択されたままになります。
複数の項目を選択するためには ブイビーエー コードを開きます。 Microsoft Visual Basic for Applications ウィンドウ ALT + F11 をクリックすると開きます)。
ドロップダウンリストで複数の項目を選択したいワークシート名または番号をダブルクリックします。 その特定のシートのコードウィンドウが表示されます。
以下は、そのコードウィンドウです。 シート2 をワークブックに追加します(このシートにはドロップダウン・リストがあります)。
コードウィンドウが開いたら、そこに次のコードを挿入します。
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = ""Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.UndoOldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
コードを保存して、今度はドロップダウン・リストから値を選択してみてください。
選択したこと ペンシル を選択すると、別の項目が選択されます。 ノートブック そしてご覧の通り、2つのアイテムが見つかりました(下の画像)。
このコードによって、選択を繰り返すことができます。 例えば、次のように選択します。 ペンシル をもう一度。
を選択すると、その項目が再び表示されます。
コード説明
2つの文字列を宣言しています。 旧価値 と ニューバリュー .
でドロップダウンリストを作ったのがわかると思います。 D4 セル、そのためターゲットアドレスは D4 を使用して、セルがデータバリデーションを使用しているかどうかを再確認しています。 ターゲット.SpecialCells .
値が選択されると、イベントをオフにして( Application.EnableEvents = False
に格納し、変更によって再びイベントが発生しないようにします。 そして、選択した項目を ニューバリュー .
変更を元に戻した後、その値を 旧価値 を確認します。 オールドバリュー が空かどうか。 もし空なら(1つの値しか選択されていないことを意味する),その場合は ニューバリュー それ以外の場合は オールドバリュー と ニューバリュー .
イベントを終了する前に、必要であれば変更できるように、リセットします。
続きを読む 複数依存のドロップダウン・リスト Excel VBA
2.ドロップダウンリストから複数の項目を選択する(一意選択のみ)
前項では、複数選択で繰り返しが可能な場合を説明しましたが、繰り返しが不要な場合は、本項に従ってください。
このデモでは便宜上、別のシートを使用します。 今回はSheet3です。 このシートのコードウィンドウに次のコードを記述してください。
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value...Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", & Newvalue Else: Target.Value = Oldvalue End If End If Application.EnableEvent = True Exitsub: Application.EnableEvent = True End Sub.
以前のコードと比較して、何か違いがありますか!? よく見てみると、わずかな違いがあることがわかると思います。
ここでは ブイビーエー という機能 インストル . インストル この関数は、文字列の中で部分文字列が最初に現れる位置を返します。 詳細は、INSTRの記事を参照してください。
この論理演算をInStr(1, Oldvalue, Newvalue) = 0として、値が見つかったかどうかを確認した。 論理演算の結果が 真 (not found earlier)であれば、その項目を選択し、先の値と連結することができます。
コードを保存して、今度は既に選択されている項目を選択してみてください。
ここでは、すでに選択されている ペンシル 重複した値を選択することはできません。
続きを読む Excelで別のシートからドロップダウンリストを作成する方法
3.改行で項目を選択する
ここまでは、項目がカンマで区切られていることがわかりました。 ここでは、選択された項目を改行で並べることにします。
簡単のために、いくつかのセルをマージしています。 D4 そのためには、結合したいセルを選択して Merge & Center から アライメント のセクションを参照してください。 ホーム タブで表示します。
セルの高さがより高くなります。
では、改行で項目を区切るコードを見てみましょう。 次のコードを使います。
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value...Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub.
前のコードと違うのは、今回は vbNewLine 中途半端 OldValue と NewValue .
vbNewLine は、項目間に新しい行を提供します。
ここで、項目を選択します。
私たちは、アイテムを選択します ペン 次に、別の要素を選択します。
2つのアイテムが異なるラインになっていることがわかります。
ここでは、2つの値が2つの行に分かれています。 別の値を選択すると、その値が別の行に追加されます。 すべての値は新しい行になります。
なお、項目を区切るために別の区切り文字を使いたい場合は、二重引用符で囲んで、その区切り文字を vbNewline .
結論
以上、ドロップダウンリストで複数選択する方法を紹介しました。 参考になれば幸いです。 分かりにくいところがあれば、コメントください。 また、他に見落とした方法があれば教えてください。