Likeの概要
パターンマッチング VBAの予約語 | ||
Like 概要 Like 演算子は、文字列が特定のパターンに一致するかを判定するために使用されます。ワイルドカード( わかりやすく説明 Like は、「この文字列はこのパターンに合ってる?」とチェックするためのものです。例えば、「abc123」が「abc*」と一致するかを調べることができます。 |
||
|
Likeの基本的な使い方
Like 演算子を使って、文字列が特定のパターンに一致するかを判定できます。
Sub CheckPattern()
Dim text As String
text = "Hello123"
If text Like "Hello*" Then
MsgBox "一致しました!", vbInformation, "結果"
Else
MsgBox "一致しません。", vbExclamation, "結果"
End If
End Sub
解説:
Like "Hello*"
は、「Hello」で始まるすべての文字列に一致します。*
は、0文字以上の任意の文字列を表します。- この場合、
"Hello123"
は"Hello*"
に一致するため、メッセージボックスが表示されます。
Likeのワイルドカード
Like 演算子では、以下のワイルドカードを使用できます。
ワイルドカード | 意味 | 例 |
---|---|---|
* |
0文字以上の任意の文字列 | "abc*" → "abc123" に一致 |
? |
任意の1文字 | "a?c" → "abc" に一致 |
# |
任意の1桁の数字 | "Item#" → "Item5" に一致 |
[abc] |
指定した文字のいずれか | "[aeiou]" → "a" や "e" に一致 |
[!abc] |
指定した文字以外 | "[!xyz]" → "a" や "b" に一致 |
[A-Z] |
指定した範囲内の文字 | "[A-Z]" → "B" に一致 |
ワイルドカードを使った応用例
以下のコードは、文字列が「ABC」から始まり、数字が続く場合に一致するかを判定します。
Sub CheckAdvancedPattern()
Dim text As String
text = "ABC123"
If text Like "ABC###" Then
MsgBox "ABCの後に3桁の数字が続いています。", vbInformation, "結果"
Else
MsgBox "パターンに一致しません。", vbExclamation, "結果"
End If
End Sub
解説:
"ABC###"
は、「ABC」の後に3桁の数字が続くパターンを指定。#
は1桁の数字を意味するため、「ABC123」は一致します。
エラーを回避する方法
Like 演算子を使用する際に、型の不一致エラーを防ぐために、適切な型チェックを行うことが重要です。
Sub SafeLikeCheck()
Dim text As Variant
text = 12345 ' 数値として代入
On Error Resume Next
If CStr(text) Like "#####" Then
MsgBox "5桁の数字です!", vbInformation, "結果"
Else
MsgBox "パターンに一致しません。", vbExclamation, "結果"
End If
If Err.Number <> 0 Then
MsgBox "エラー発生: " & Err.Description, vbExclamation, "エラー"
Err.Clear
End If
End Sub
解説:
- 数値型のデータを
CStr()
で文字列に変換。 - エラーハンドリングを追加し、予期しないエラーが発生しても処理を継続。
Likeの注意事項
- Like 演算子は大文字・小文字を区別しない: 標準では
"ABC"
と"abc"
は同じと判定される。 - 厳密な比較をする場合は Option Compare Binary を使用:
Option Compare Binary
を指定すると大文字・小文字が区別される。 - 数値の比較には向かない: 数値の範囲チェックには適していないため、数値比較には
>
,<
を使用する。
よくある質問
- Q: Like はどんな場面で使いますか?
- A: 文字列のパターンチェック(例:「abc*」で始まるかなど)や、特定のフォーマットを満たすかを判定する際に使用されます。
- Q: Like で大文字・小文字を区別できますか?
- A: 通常は区別されませんが、
Option Compare Binary
を指定すると区別されます。 - Q: 数値の範囲チェックに使えますか?
- A: いいえ。Like は数値の比較には適していません。数値の大小比較には
>
,<
を使用してください。 - Q: ワイルドカードの [! ] の使い方が分かりません。
- A:
[!abc]
は「a, b, c 以外の文字に一致する」という意味です。
まとめ
- Like 演算子は、文字列のパターンマッチングに使用する。
- ワイルドカード(
*
,?
,#
など)を使って柔軟な検索が可能。 - 大文字・小文字の区別は通常行われない。
- 数値の比較には向かないため、適切な比較方法を選ぶ。
- エラーハンドリングを活用して予期しないエラーを回避する。