Excelの入力規則とVBAチェックはどっちで制御すべきか

Excel VBA

Excelの入力規則とVBAチェックはどっちで制御すべきか

Excelで業務用シートを作ると、

必ず出てくる問題があります。

それは、

入力ミスをどう防ぐか

です。

例えば、

  • 必須項目が空欄のまま
  • 数値で入れてほしい場所に文字が入る
  • リストから選んでほしい項目が自由入力される
  • 日付の形式がバラバラになる
  • 処理を実行してから入力漏れに気づく

といった問題です。

この対策としてよく出てくるのが、

  • Excelの入力規則
  • VBAによる入力チェック

です。

どちらも入力ミス対策に使えますが、

役割は少し違います。


結論:入力時は入力規則、実行前はVBAチェック

まず結論です。

入力時に利用者を誘導するなら、

入力規則

が向いています。

一方で、

マクロ実行前に入力内容をまとめて確認するなら、

VBAチェック

が向いています。

実務配布用のExcelでは、

どちらか一方だけに頼るより、

入力規則で入力を誘導し、VBAチェックで実行前に検査する

という組み合わせが無難です。


入力規則とVBAチェックの違い

方法 役割 向いている場面 注意点 実務でのおすすめ用途
入力規則 入力時の誘導・軽い制限 リスト選択、数値範囲、日付範囲 貼り付けや複雑条件には弱い 入力候補を絞る、単純な入力ミス防止
VBAチェック 実行前の検査 未入力チェック、複数条件チェック、整合確認 コードを書く必要がある 処理実行前の最終確認、安全装置

入力規則は、

利用者が入力するときに効く仕組みです。

VBAチェックは、

処理を実行する前に、

入力内容を確認する仕組みです。

つまり、

入力規則は

入力時の誘導

です。

VBAチェックは

実行前の検査

です。


入力規則とは

入力規則は、

セルに入力できる値を制限するExcel標準機能です。

例えば、

  • リストから選ばせる
  • 数値の範囲を制限する
  • 日付の範囲を制限する
  • 文字数を制限する
  • 入力時にメッセージを出す

といったことができます。

VBAを書かなくても設定できるため、

軽い入力ミス防止にはかなり便利です。

例えば、

「区分はA・B・Cから選んでほしい」

という場合は、

入力規則のリストを使うと分かりやすくなります。

利用者にとっても、

候補から選べるため迷いにくいです。


VBAチェックとは

VBAチェックは、

マクロ実行時に入力内容を確認する方法です。

例えば、

  • 必須セルが空欄ではないか
  • 数値が範囲内か
  • 日付が入力されているか
  • 複数セルの組み合わせが正しいか
  • 処理に必要な項目が揃っているか

といったことをコードで確認します。

入力規則よりも自由度が高く、

複数セルや複雑な条件をまとめて検査しやすいのが特徴です。

ただし、

コードを書く必要があります。

作り込みすぎると、

保守が重くなる点には注意が必要です。


入力規則だけでは不十分な場面

入力規則は便利ですが、

万能ではありません。

実務では、

入力規則だけでは防ぎきれない場面があります。

例えば、

他のセルからコピーして貼り付けられる場合です。

貼り付け操作によって、

入力規則が崩れたり、

想定外の値が入ったりすることがあります。

また、

既に入力済みのデータが、

後から変更した入力条件に合わなくなることもあります。

さらに、

複数セルを組み合わせて判断する条件には、

入力規則だけでは対応しにくいです。

例えば、

「A列が未入力ならB列も未入力でなければならない」

「日付Aは日付Bより前でなければならない」

といった条件です。

このような場合は、

VBAチェックが必要になります。


VBAチェックだけでは不親切な場面

逆に、

VBAチェックだけに頼るのも不親切です。

入力時点では間違いに気づけず、

実行ボタンを押してから、

大量のエラーが出ることがあります。

利用者からすると、

「最初から選択肢を出してくれればよかったのに」

という状態になります。

例えば、

区分をA・B・Cから選ぶだけなら、

VBAで最後にチェックするより、

入力規則のリストで選ばせた方が分かりやすいです。

入力候補が決まっているものは、

入力時に誘導した方が利用者に親切です。


実務配布では組み合わせが無難

実務配布用のExcelでは、

入力規則とVBAチェックを組み合わせるのが無難です。

役割を分けると、

次のようになります。

  • 入力規則:入力候補を絞る
  • 入力規則:利用者に選択肢を見せる
  • VBAチェック:処理前に未入力を確認する
  • VBAチェック:異常値や整合不一致を確認する
  • VBAチェック:問題があれば処理を止める

つまり、

入力規則は利用者向けの誘導です。

VBAチェックは処理安全用の検査です。

この2つを分けて考えると、

設計しやすくなります。


コピペで試せる確認用コード

次のコードは、

VBAで最低限の未入力チェックを行うサンプルです。

A1セルが空欄ならメッセージを表示して処理を止めます。

A1セルに値があれば、

確認メッセージを表示します。

このコードは、

標準モジュールに貼って、テスト用のxlsmで実行してください。

ご注意

以下のVBAコードは、動作イメージを確認するためのサンプルです。
実行前に必ずExcelファイルのバックアップを作成してください。
業務で使用しているファイルに、いきなり貼り付けて実行しないでください。
Excelのバージョンや設定により、動作が異なる場合があります。

Sub CheckInputBeforeRun()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)

    If Trim(ws.Range("A1").Value) = "" Then
        MsgBox "A1セルが未入力です。入力してから実行してください。", vbExclamation
        Exit Sub
    End If

    MsgBox "入力チェックOKです。処理を続行できます。", vbInformation

End Sub

このコードでは、

A1セルの値を確認しています。

空欄であれば、

メッセージを表示して Exit Sub で処理を止めます。

入力されていれば、

「入力チェックOK」と表示します。

ファイル削除、

上書き保存、

外部通信などは行いません。


実務ではどう使い分けるか

実務用Excelでは、

入力規則とVBAチェックを次のように使い分けると分かりやすいです。

選択肢を選ばせたい場合

入力規則が向いています。

例えば、

  • 区分
  • 種別
  • 有無
  • 判定
  • 担当者名
  • 固定された項目リスト

などです。

リスト選択にしておけば、

表記ゆれを減らせます。

数値や日付の軽い制限

これも入力規則が向いています。

例えば、

  • 0以上の数値
  • 1から5までの整数
  • 今日以降の日付
  • 指定期間内の日付

などです。

入力時に間違いを減らせるため、

利用者にも分かりやすいです。

必須入力チェック

必須入力は、

VBAチェックで確認するのが安全です。

入力規則でもある程度制御できますが、

貼り付けや既存データには弱い場合があります。

処理実行前に、

必要なセルが埋まっているか確認する方が安全です。

複数条件の整合確認

複数セルの関係を見る場合は、

VBAチェックが向いています。

例えば、

  • Aが入力されているならBも必須
  • 開始日は終了日より前
  • 区分が特定値なら追加項目が必須
  • 合計値が基準値を超えていないか

といった条件です。

これは入力規則だけでは管理しにくいため、

VBAチェックで確認する方が現実的です。


入力時に止めるか、実行時に止めるか

入力制御を考えるときは、

いつ止めたいのか

を分けると整理しやすくなります。

入力時に止めたいなら、

入力規則です。

実行時に止めたいなら、

VBAチェックです。

例えば、

利用者に正しい候補を選ばせたいなら、

入力規則で十分です。

一方で、

処理を実行する前に、

未入力や不整合をまとめて確認したいなら、

VBAチェックが必要です。

実務では、

この2つを混ぜて考えると設計がぶれます。


入力規則は利用者への案内

入力規則は、

単なる制限ではありません。

利用者への案内でもあります。

リストが表示されれば、

利用者は何を入力すべきか分かります。

入力メッセージを設定すれば、

そのセルの意味を補足できます。

つまり、

入力規則は、

利用者が迷わないための仕組みです。

業務用Excelでは、

「入力できないようにする」

だけではなく、

「何を入力すればよいか分かるようにする」

ことが重要です。


VBAチェックは処理前の安全装置

VBAチェックは、

処理前の安全装置です。

入力規則を設定していても、

想定外の入力が残ることはあります。

そのため、

重要な処理の前には、

VBAで最終確認を入れた方が安全です。

例えば、

  • 出力ボタンを押す前
  • ファイル生成前
  • 一覧作成前
  • データ転記前
  • 帳票作成前

などです。

処理を始めてからエラーになるより、

処理前に止めた方が安全です。


まとめ

入力規則とVBAチェックは、

どちらも入力ミス対策に使えます。

ただし、

役割が違います。

入力規則は、

入力時の誘導に向いています。

VBAチェックは、

実行前の検査に向いています。

入力規則だけでは、

貼り付けや複雑条件に弱い場面があります。

VBAチェックだけでは、

利用者への入力誘導が弱くなります。

実務配布用のExcelでは、

入力規則で利用者を誘導し、

VBAチェックで処理前に確認する。

この組み合わせが無難です。

迷ったら、

軽い制限は入力規則、重要な検査はVBAチェック

と考えると整理しやすくなります。


関連記事

  • Excel VBAでRangeとCellsはどっちを使うべきか
  • Excel VBAでThisWorkbookとActiveWorkbookは何が違うのか
  • Excel VBAでフォームコントロールのボタンにマクロを登録する方法

維持DXノートについて

維持DXノートでは、

建設コンサル実務で使うExcel/VBAや、

橋梁点検調書作成支援ツールの開発メモを公開しています。

Excel作業の自動化や、

帳票作成の手間を減らす考え方を、

実務目線で整理しています。


関連する無料Excelツール

維持DXでは、

橋梁点検・維持管理業務向けのExcel VBAツールを無料公開しています。

  • 橋梁点検調書の作成支援ツール
  • 評価結果一覧作成ツール
  • 旧様式から2024様式への移行支援ツール
  • 成果整合確認ツール

いずれも、

実務で発生しやすい

  • 転記作業
  • 写真貼付
  • 一覧作成
  • 旧成果移行
  • 整合確認

の負担を減らすための補助ツールです。

以下のフォームにメールアドレスを入力すると、

ダウンロードURLを自動返信メールでお送りします。

    お名前(任意)

    メールアドレス(必須)

    会社名・所属(任意)

    ご関心のある内容(任意)

    ご相談内容(任意)

    ご注意

    ダウンロードURLは、入力いただいたメールアドレス宛に自動返信で送信されます。

    ダウンロードしたExcelでマクロが実行できない場合は、

    右クリック → プロパティ →「許可する」 をチェック後、再度開いてください。

    (Windowsのセキュリティ機能により初回実行時にブロックされる場合があります)

    コメント