Excel VBAでセルデータの種類に基づく制限を設定する方法

Excelのシート上で特定のセルにデータ入力を行う際、データの種類に応じて入力制限をかけることができます。VBAを利用すると、より詳細な制限やカスタムメッセージの表示などが可能となります。この記事では、Excel VBAを使用してセルのデータ種類(テキスト、数値、日付など)に基づく制限を設定する方法を具体的なコード例とともに詳しく解説します。

目次

Excel VBAの基本

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

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

基本的な制限の設定方法

Excel VBAでは、`Validation`オブジェクトを使用してセルの入力制限を設定することができます。以下は、A1のセルに数値のみを入力させる制限をかける基本的なコードです。


Sub SetNumericValidation()
    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "数値を入力してください。"
    End With
End Sub

このコードでは、A1のセルに数値以外のデータが入力されると、エラーメッセージが表示されます。

テキストの制限

特定の文字列のみを許可する制限を設定したい場合、以下のようにします。


Sub SetTextValidation()
    With Range("B1").Validation
        .Delete
        .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1", Formula2:="10"
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "1文字以上10文字以下のテキストを入力してください。"
    End With
End Sub

B1のセルには、1文字以上10文字以下のテキストのみが入力可能になります。

日付の制限

日付の範囲を制限する場合のコード例を以下に示します。


Sub SetDateValidation()
    With Range("C1").Validation
        .Delete
        .Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="2023/01/01", Formula2:="2023/12/31"
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "2023年の日付を入力してください。"
    End With
End Sub

応用例

応用例1: 複数のセル範囲に制限を設定

同じ制限を複数のセルに一括で適用したい場合は、セル範囲を指定して以下のようにします。


Sub SetMultipleCellsValidation()
    With Range("A1:A10").Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "数値を入力してください。"
    End With
End Sub

応用例2: ドロップダウンリストからの選択を制限

セルに入力できる値をドロップダウンリストからの選択のみに制限する場合、以下のように設定します。


Sub SetDropdownValidation()
    With Range("D1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="選択1,選択2,選択3"
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "リストから選択してください。"
    End With
End Sub

応用例3: カスタム式による制限

特定の条件式を満たす値のみを許可する場合は、カスタム式を使用します。例として、E1のセルの値がF1のセルの値より大きい場合のみを許可する制限を設定します。


Sub SetCustomValidation()
    With Range("E1").Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=E1>F1"
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
        .ErrorTitle = "入力エラー"
        .ErrorMessage = "E1の値はF1の値より大きくしてください

。"
    End With
End Sub

まとめ

Excel VBAを使用することで、セルのデータ入力制限を詳細に設定することができます。上記の基本的な制限設定方法や応用例を参考に、自身のニーズに合わせた制限を実装してみてください。また、エラーメッセージを工夫することで、ユーザーに対するガイダンスをより分かりやすく伝えることができます。

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

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

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

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

コメント

コメントする

目次