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

 

 
 
 
 

余談:RegExpオブジェクト のちょっとした解説

RegExpとは

紹介コードに「Set objReg = New RegExp」というのがあったと思います。

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

で、「Dim 変数 As New RegExp」は、クラスを使用する際の構文となります。

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

クラスについては、慣れないと理解できないものなので、分からなくても大丈夫ですよー。これを機会にGoogleで「VBA クラスとは」と検索すると良いかもしれません。
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

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

 

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

 

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

終わり。




  • この記事を書いた人

Nakamura(nkmr)

NakamuraBlog(ナカログ)運営 [ 2.5万PV/月 ] │ブロガー│ 【経歴】IT会社に新卒入社 ▶︎ 通用しない ▶︎ プログラミングに出会う ▶︎ 年間1億円以上のコスト削減プログラムを開発 ▶︎ 会社賞受賞 ▶︎ 少しでも世の中の苦しんでる私と似た人に役に立てればと思いブログを開設。 ● 文系がプログラムと出会って会社員人生が変わった人。 ● 2020年より「嫁を置いて1人旅」の旅動画を投稿開始。

-ALL, EXCEL, Program, VBA
-,