Excel VBAでプルダウンリストに常に候補リスト全体を表示する方法【VBA】

Excelでデータ入力を簡単にするために、プルダウンリストを設定することは多くの方が利用しています。しかし、プルダウンリストで「一度選択するとリストが部分的にしか表示されなくなる」という問題に悩むことも多いのではないでしょうか?

本記事では、VBA(Visual Basic for Applications)を使用して、常に候補リスト全体を表示するプルダウンリストをExcelに設定する方法について解説します。VBAを使用したこのカスタムプルダウンリストなら、どんな場合でもリスト全体が表示されるようになります。ぜひ参考にして、Excelの入力効率を向上させてください!

目次

Excelでプルダウンリストを設定する基本

Excelの基本機能でプルダウンリストを設定する場合、「データの入力規則」を使用します。以下の手順で簡単にリストを作成できます。

  1. リスト項目を準備:まず、候補として使いたい項目をExcelのセル範囲に入力します(例:A1:A10)。
  2. セルの選択:プルダウンリストを表示させたいセルを選択します(例:D1)。
  3. データの入力規則を設定
    • Excelの「データ」タブから「データの入力規則」をクリックし、「リスト」を選択します。
    • 「元の値」欄に候補リストの範囲(例:$A$1:$A$10)を入力してOKを押します。

これで、D1セルにプルダウンリストが表示されます。しかし、この方法では一度候補リストから選択すると、次回以降は部分的なリストしか表示されなくなります。この問題を解決するために、次章で紹介するVBAコードを使って「常にリスト全体を表示するプルダウンリスト」を実装してみましょう!

Excel VBAで常にリスト全体を表示するプルダウンリストを実装

以下のVBAコードは、D1セルに入力する際、常に最初の候補リスト全体を表示するプルダウンリストを作成します。この方法なら、選択済みの内容にかかわらず、再度候補リスト全体が表示されます。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim fullList As String
    
    ' 候補リストのシートと範囲を設定
    Set ws = ThisWorkbook.Sheets("候補リストシート") ' リストがあるシート名に変更
    Set rng = ws.Range("A1:A10") ' 候補リストの範囲に変更
    
    ' D1セル以外は処理しない
    If Target.Address <> "$D$1" Then Exit Sub
    
    ' 候補リスト全体を生成
    fullList = ""
    For Each cell In rng
        If cell.Value <> "" Then
            fullList = fullList & cell.Value & ","
        End If
    Next cell
    fullList = Left(fullList, Len(fullList) - 1) ' 末尾のカンマを削除
    
    ' 常にリスト全体をプルダウンリストに表示
    With Target.Validation
        .Delete ' 一度削除して再設定
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=fullList
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = False
    End With
End Sub

コードの解説

  • 候補リストの範囲を指定Set ws = ThisWorkbook.Sheets("候補リストシート")Set rng = ws.Range("A1:A10")で、候補リストがあるシートと範囲を指定します。
  • 入力セルの条件を指定If Target.Address <> "$D$1" Then Exit Subで、D1セル以外でこのVBAが動作しないようにしています。
  • 候補リスト全体を生成:リスト範囲の内容を文字列として結合し、カンマ区切りの候補リストを生成します。
  • プルダウンリストの更新:対象のセル(D1)に対して、常に候補リスト全体をプルダウンに表示させる設定を適用します。

これにより、どんな入力をしても候補リストが常にプルダウンで表示されるようになります。

VBAプルダウンリストのカスタマイズで業務効率を向上

このようなVBAを活用することで、Excelのプルダウンリストをさらに使いやすくカスタマイズできます。また、複数のセルで同じ設定を適用することも可能です。Excel VBAを使ったデータ入力の自動化やカスタマイズは、業務効率の向上に大いに役立つので、ぜひ試してみてください。

参考になれば、幸いです。

技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。

プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。

気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。

[Kindle Unlimited 読み放題プランをチェックする]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次