Excelでデータ入力を簡単にするために、プルダウンリストを設定することは多くの方が利用しています。しかし、プルダウンリストで「一度選択するとリストが部分的にしか表示されなくなる」という問題に悩むことも多いのではないでしょうか?
本記事では、VBA(Visual Basic for Applications)を使用して、常に候補リスト全体を表示するプルダウンリストをExcelに設定する方法について解説します。VBAを使用したこのカスタムプルダウンリストなら、どんな場合でもリスト全体が表示されるようになります。ぜひ参考にして、Excelの入力効率を向上させてください!
Excelでプルダウンリストを設定する基本
Excelの基本機能でプルダウンリストを設定する場合、「データの入力規則」を使用します。以下の手順で簡単にリストを作成できます。
- リスト項目を準備:まず、候補として使いたい項目をExcelのセル範囲に入力します(例:
A1:A10)。 - セルの選択:プルダウンリストを表示させたいセルを選択します(例:
D1)。 - データの入力規則を設定:
- 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円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
