【VBA入門】Like演算子(ワイルドカード、エスケープ、否定)

長野 透
書いた人 長野 透
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

Like演算子って使っていますか?

正規表現が使えない場合に、Like演算子で代替することができて便利です。

この記事では、Like演算子について

・Like演算子とは
・ワイルドカードとは
・Like演算子の使い方

という基本的な内容から、

・ワイルドカードのエスケープ
・Likeの否定(Not)
・複数条件を指定するには
・大文字小文字の区別なしで使用するには

など応用的な内容についても解説していきます。

今回はLike演算子について、使い方をわかりやすく解説します!

Like演算子とは

Like演算子は2つの文字列を比較するために使用します。

Like演算子は以下のように記述して使います。

stringとpatternはString型の文字列です。

stringがpatternに一致する場合resultはTrueになり、一致しない場合resultはFalseになります。

stringまたはpatternのどちらかがNullの場合、resultはNullになります。

patternにはパターンマッチング規則に準拠する文字列を指定することができます。

ワイルドカード文字や文字のリスト、文字の範囲を組み合わせて正規表現に近いパターンマッチングを行うことができます。

Like演算子の使い方

Like演算子はresultにTrueもしくはFalseを格納するので、Ifステートメントと合わせてよく使われます。

以下のような記述になります。

サンプルコードで確認しましょう。

実行結果:
Like01

このサンプルコードでは、まずFor Eachステートメントを使って配列arrの要素1つずつを抽出しています。

それぞれの要素をLike演算子を使ってString型変数patternと一致するかマッチングを行い、マッチした場合はその要素を表示しています。

ちなみに変数pattern内で使われいる”[ ]”はワイルドカードで使用される文字で、ワイルドカードとそれに使われる文字については後ほど解説します。

ワイルドカードとは

ワイルドカードとは、あるパターンにマッチするように表現した文字列のことです。

不特定の文字列があるパターンにマッチするか一括で判定する場合などに使われます。

ワイルドカードで使われる文字について表にまとめした。

文字説明
?任意の1文字
*0文字以上の文字
#0~9の半角数字
[charlist]charlistに含まれる全角または半角の1文字
[!charlist]charlistに含まれない全角または半角の1文字

ワイルドカードで使える文字は、正規表現で使える文字に比べて少ないので、正規表現に比べて表現できるパターンには制限があります。

それではサンプルコードで確認してみましょう。

文字"!"を使ってcharlistに含まれない文字を出力表示します。

実行結果:
Like02

このサンプルコードでは、先ほどのサンプルコードの変数patternの値を"[!エンジニア]"としています。

したがって、配列arrの要素から”エンジニア”のいずれの文字とも一致しない文字が出力表示されています。

ワイルドカードのエスケープ

ワイルドカードとそれに使用する文字について解説しました。

ワイルドカードで使われている文字、例えば"?"や"!"などをLike演算子のpatternの中に使いたい場合、どうしたらよいのでしょうか?

"?"や"!"などのワイルドカードで使われる文字をLike演算子のpattern中で使えるように記述することをワイルドカードのエスケープと呼びます。

ワイルドカードで使われる文字は”[ ]”で囲むことでエスケープすることができます。

サンプルコードで確認しましょう。

実行結果:
Like03

このサンプルコードでは、Like演算子を使ってString型変数patternと一致するかマッチングを行っています。

変数patternにはワイルドカードで使用する文字"!"を”[ ]”で囲って使用しています。

変数strには文字"!"が含まれますので、結果が出力表示されています。

Likeの否定(Not)

IfステートメントでLikeを否定する記述は下記のとおりになります。

サンプルコードで確認しましょう。

実行結果:
Like02

複数条件を指定するには

複数条件を指定するには論理演算子「And」や「Or」を使用します。

サンプルコードで確認しましょう。

実行結果:
Like04

大文字小文字の区別なしで使用するには

Like演算子は大文字小文字を区別してパターンマッチングの判定を行います。

これに対し、大文字小文字の区別なしでLike演算子の判定を行うには2つの方法があります。

1つ目は、Option Compare Textで指定する方法です。

2つ目は、比較する2つの文字列を「どちらも大文字」もしくは「どちらも小文字」に変換してから比較する方法です。

それぞれくわしくみていきましょう。

Option Compare Textで指定する方法

Option CompareステートメントをTextで指定すると、文字列比較は大文字と小文字を区別しなくなります

サンプルコードで確認しましょう。

実行結果:
Like05

大文字もしくは小文字に変換する方法

文字列を大文字に変換するにはUCase関数を、小文字に変換するにはLCase関数を使用します。

比較する文字列をどちらも大文字に変換してLike演算子で判定してみましょう。

実行結果:
Like05

文字列の操作総まとめ

この記事では紹介しきれなかった文字列の様々操作についてはこちらの記事で解説しているので、ぜひ確認してみてください!

まとめ

ここでは、Like演算子の使い方について説明しました。

Like演算子はワイルドカードを使ってパターンマッチングができます。

正規表現が使えない場合などは、Like演算子とワイルドカードで代替することができて便利です。

使いこなすことができるように、この記事を何度も参考にして下さいね!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]