Excel VBAを利用してプルダウンリストの選択肢からの入力制限を実装する方法

この記事では、Excel VBAを使用してプルダウンリストの選択肢に基づいた入力制限を実装する方法について詳しく説明します。業務効率化のための技術として、正確なデータ入力をサポートするこの方法は、多くのビジネスシーンで役立つでしょう。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

プルダウンリストの選択肢からの入力制限とは

プルダウンリストの選択肢からの入力制限は、特定のセルにプルダウンリストで設定した選択肢以外の値を入力することを制限する機能です。これにより、誤ったデータの入力を防ぎ、データの整合性や正確性を高めることが可能です。

VBAを使用した入力制限の基本的な実装

以下は、VBAを使用してプルダウンリストの選択肢からの入力制限を実装する基本的なコードです。


Sub InputRestriction()

    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1")

    With rng.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="選択肢1,選択肢2,選択肢3"
        .ShowInput = True
        .ShowError = True
    End With

End Sub

上記のコードでは、Sheet1のA1セルに対して、「選択肢1」「選択肢2」「選択肢3」という3つの選択肢のみを入力許可する制限が設定されます。

応用例1: 選択肢を動的に設定する

選択肢を固定せず、他のセルの値に基づいて動的に変更することも可能です。以下の例では、B列の値を選択肢として設定します。


Sub DynamicOptions()

    Dim rng As Range
    Dim options As String
    Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1")
    
    options = Join(Application.Transpose(ThisWorkbook.Sheets("Sheet1").Range("B1:B3").Value), ",")

    With rng.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=options
        .ShowInput = True
        .ShowError = True
    End With

End Sub

応用例2: 複数のセルに入力制限を設定する

範囲を指定して、複数のセルに入力制限を設定することも可能です。以下のコードでは、A1からA10までのセルに入力制限を設定します。


Sub MultipleCellsRestriction()

    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")

    With rng.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="選択肢1,選択肢2,選択肢3"
        .ShowInput = True
        .ShowError = True
    End With

End Sub

応用例3: 入力エラー時のメッセージをカスタマイズする

デフォルトのエラーメッセージではなく、カスタマイズしたメッセージを表示することもできます。


Sub CustomErrorMessage()

    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1")

    With rng.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="選択肢1,選択肢2,選択肢3"
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "許可されていない値です。"
        .ShowError = True
    End With

End Sub

まとめ

Excel VBAを利用したプルダウンリストの選択肢に基づいた入力制限は、誤ったデータ入力を防ぐための強力なツールとなります。上記の基本的な方法や応用例を参考に、自分の業務に合わせたカスタマイズを試みてください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次