VBAでセルなどの入力チェックを行う

入力チェックの種類

セルやテキストボックスの文字列の入力チェックが必要な場合がありますが、入力チェックには以下のようにいろいろあります。

  1. 未入力チェック
  2. 文字数チェック
  3. 日付形式チェック
  4. 郵便番号形式チェック
  5. メールアドレス形式チェック
  6. 全角のみチェック
  7. 半角のみチェック
  8. 数字のみチェック
  9. 英字のみチェック

入力項目の内容に合わせて細分化すればさらにチェック形式が増えますがここでは上に挙げた各チェックについて実装方法を紹介します。

なお、一部のチェックでは都合がいいため正規表現を利用しています。正規表現が分からなくてもコピペで使えるようにしています。

事前設定

以下の一部のチェックで正規表現を使っているため、正規表現を利用するための参照設定をしておく必要があります。

VBAの画面でツールメニュー→参照設定のダイアログを開き、「Microsoft VBScript Regular Expressions 5.5」にチェックを付けることで正規表現のRegExpクラスが利用できるようになります。

1. 未入力チェック

引数の指定セル範囲に空白セルが1つもなければTrue、1つでもあればFalseを返します。

使い方

2. 文字数チェック

引数の指定セル範囲の文字列の長さが指定した最小と最大の範囲に収まっているかをチェックします。範囲内であればTrue、そうでないならFalseを返します。

使い方

3. 日付形式チェック

引数の指定セル範囲の文字列をIsDate関数で判定しています。IsDate関数は「20180522」のような8文字の数字列は日付として認めないため、許可したい場合はIsDate関数だけでは対応できません。

そのような場合はカスタマイズが必要になります。

8文字日付形式用に拡張したIsDate関数を「8桁日付やスラッシュ編集日付用のIsDate関数」でIsDateEx関数として紹介していますので、IsDate関数の代わりに差し替えてもらえば8文字日付でもチェックが可能になります。

使い方

4. 郵便番号形式チェック

日本で使われる郵便番号は一般的には7桁の999-9999形式のため正規表現でチェックしています。

もし海外の郵便番号への対応が必要になるなどの特殊事情がある場合はチェックをゆるくするなどの対応が必要になります。

使い方

5. メールアドレス形式チェック

メールアドレスの厳密なチェックは結構大変です。

企業のメールアドレスのように命名法則が決まっているのであれば正規表現でのチェックも可能ですが、想定されるメールアドレスの形式を網羅するような正規表現でのチェックは残念ながら無理です。

そこで、かなりチェックはゆるいのですが、「a@a.a」の形式になっていればOK、とするチェックにしています。

使い方

6. 全角のみチェック

文字列が全角のみかをチェックします。

12行目のStrConv関数で、DBCS言語であるセルの文字列をASCII言語に変換しています。

これにより、全角の「あa」が変換前はDBCS言語として4バイトだったのが、Shift-JIS換算の3バイトとして扱われるようになります。

DBCS言語の場合は全角や半角に関わらず1文字が2バイトとして扱われます。半角英数の”1″や”a”も2バイトです。

15行目のLen関数でセルの文字列の文字数を取得し2倍しています。「あいう」なら6、「あa」なら4が返ります。

16行目でASCII変換後の文字列に対してLenB関数を使うとバイト数を取得できます。

ASCII変換後の「あいう」なら6、「あa」なら3が返ります。全て全角文字であれば文字数×2と全角バイト数が一致するため、そこから全角文字で構成されているかを判定します。

DBCS言語などについての詳細は「VBAのByte単位用関数の問題点」をご参照ください。

使い方

7. 半角のみチェック

文字列が半角のみかをチェックします。

文字コードの理屈については全角のみチェックと同じです。

全角文字のチェックで15行目で2倍していた部分が無くなっただけです。

使い方

8. 数字のみチェック

数字のみかどうかを正規表現でチェックしています。

コードでは半角数字のみを対象としていますが、全角数字も対象としたい場合は”^[0-9]+$”を”^[0-90-9]+$”としてください。ブラウザではわかりにくい場合がありますが追加している0-9の数字は全角です。

使い方

9. 英字のみチェック

数字のみのチェックと同様に正規表現でチェックしています。

コードでは大文字と小文字の両方を対象としていますが、大文字のみにしたい場合などは正規表現の条件から不要な部分を削除してください。

大文字のみであれば「”^[A-Z]+$”」、小文字のみであれば「”^[a-z]+$”」としてください。

使い方

関連記事

サブコンテンツ

このページの先頭へ