Excelのシート上で特定のセルにデータ入力を行う際、データの種類に応じて入力制限をかけることができます。VBAを利用すると、より詳細な制限やカスタムメッセージの表示などが可能となります。この記事では、Excel VBAを使用してセルのデータ種類(テキスト、数値、日付など)に基づく制限を設定する方法を具体的なコード例とともに詳しく解説します。
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的な制限の設定方法
Excel VBAでは、Validation
オブジェクトを使用してセルの入力制限を設定することができます。以下は、A1のセルに数値のみを入力させる制限をかける基本的なコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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のセルに数値以外のデータが入力されると、エラーメッセージが表示されます。
テキストの制限
特定の文字列のみを許可する制限を設定したい場合、以下のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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文字以下のテキストのみが入力可能になります。
日付の制限
日付の範囲を制限する場合のコード例を以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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: 複数のセル範囲に制限を設定
同じ制限を複数のセルに一括で適用したい場合は、セル範囲を指定して以下のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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: ドロップダウンリストからの選択を制限
セルに入力できる値をドロップダウンリストからの選択のみに制限する場合、以下のように設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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のセルの値より大きい場合のみを許可する制限を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント