ALL EXCEL Program VBA

【VBA】正規表現による半角英数字チェック【コピペ】

 
EXCEL VBAで正規表現による半角英数字をチェックするさせる方法を教えてください
 

こんな悩みに回答します。

 
 

こんな悩みの人向け

こんな悩みの人向け

  • 正規表現により半角英数字をチェックしたい人

これをやりたい人には様々な理由があると思います。

例えば、EXCELを入力フォーマットとして利用していた場合、後続処理の関係で、入力値が正しいかどうかを自動で確定させたい・・・など。

僕の場合は、VBAでWebスクレイピングする際、ログインID/PWを事前にEXCELに入力してもらう方式を取ってるんですが、そういった場合に正規表現は活用してますね。
Nakamura
 

正規表現は奥が深いので、今回は「半角英数字」に絞っておりますゆえ、お許しください。

基本的にコピペでOKです。VBAの使い方が分からない人は、この辺の記事をどうぞ。
Nakamura
 
【説明】VBEで作成したVBAコードの実行方法【EXCEL VBA】

続きを見る

 

【解説付】マクロ・VBE・VBAの違いの説明【EXCEL VBA】

続きを見る

 

ということで、説明となります。

 
 

コードの紹介(結論)※コピペでOK

コードは至ってシンプルで、以下の通り。

Functionの方が、使い勝手が良いので、Functionで記載しております。

 

重要なポイント

  •  このFunctionは Boolean型で返り値(True/False)が出力されます。
  • 「英数字だけで構成されている場合は True、そうでない場合は False 」が戻る仕様となっています。
 

実行したいSub~End Sub の間に「chk_hankakueisuzi(対象文字列)」 と記入すれば、True/Falseが判明します。

VBAで正規表現をやろうとしている人は、VBA中級者以上だと思いますので、Functionの詳細な説明は省きますね!
Nakamura
 
 

検証用のテストコード

簡単ですが、検証用のテストコードを紹介しますね。

 
 

検証するのが面倒な人向けに、検証用コードの出力結果をキャプチャを貼っておきます。

 

イミディエイトウィンドウにTrue/Falseが出力されてるのが分かります。
Nakamura

VBA_正規表現_テストコードの検証結果

 
 
 
 

余談:RegExp のちょっとした解説

RegExpとは

紹介コードに「Set objReg = CreateObject("VBScript.RegExp")」というのがあったと思います。

この「RegExp」は「Regular Expressions(意味:正規表現)」の略となります。

で、「CreateObject("VBScript.〇〇")」は、このRegExpを使用する際の構文となります。

つまり、雑な言い方ですが、「RegExp」を使って、正規表現チェックしまっせー、の意味になります。

CreateObject系は、分からなくても大丈夫ですよー。必要な時に、Googleで検索して都度使用すれば良いと思います。
Nakamura
 
 

 

RegExpについて

RegExpについて、プロパティ 及び メソッド は以下の通り。

プロパティ 説明
Global 検索文字列全体にを検索する(True)か、最初の一致を検索する(既定値:False)のかを設定
Pattern 検索時のパターンを設定
IgnoreCase 検索時に大文字と小文字を区別する(既定値:False)か、区別しない(True)かの設定値

青文字:本記事紹介コードで利用しているもの

 
メソッド 説明
Execute objReg.Execute(string)
指定された文字列を正規表現で検索。
見つかった文字列毎に存在するMatchオブジェクトを含むMatchesコレクションを返す。
Replace objReg.Replace(string1, string2)
検索されたstring1→string2へ文字列を置換
Test objReg.Test(string)
パターンに一致する文字列が検索された場合、Trueを返します。
見つからない場合、Falseを返す。

青文字:本記事紹介コードで利用しているもの

 
 

 

ここまで読んだところで、本記事で紹介しているコード(同じ)を再度 見てみましょう。

 

先ほどよりは、「何をしているか」を理解できると思います。

ある程度 理解したコードじゃないと使うの怖いですからね。そういった人向けに 少しだけ解説しました。
Nakamura
 
 

 

終わりに

 

お疲れさまでした。

今回 紹介した正規表現ですが、結構 奥深い分野だと個人的には思っています。

この辺を知るとプログラム動作の安定性が格段に上がるんですよね。その分、メンテナンスが面倒になったりしますが。笑
Nakamura
 

ただ こういった正規表現は、VBAに限らず、その他言語でも多用する「実用的」な方法となります。

RubyでもPythonでも フレームワークで Webサイト構築時のログインID/PWの正規表現うんちゃら、みたいで利用するケースは結構あります。
Nakamura

まぁこの辺は、実際に その場面が訪れた時に 勉強すればいいので この辺で。(もちろん、暗記は不要ですよー。)

 

ということで、今回はここまでとなります。

 

ここまでご覧いただき、ありがとうございました。

終わり。




-ALL, EXCEL, Program, VBA
-,