VBAで文字列を扱っていると、次のようなことはありませんか?
- 2つの文字列が同じか比較したい
- 大文字・小文字を区別して比較したい
- 文字列比較を安全に行いたい
このような場合は、StrComp関数を使うことで解決できます。
文字列同士を比較し、結果を数値で返してくれる便利な関数です。
この記事では、StrComp関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 文字列比較ができる
- 大文字・小文字を区別できる
- 実務で使える比較処理が分かる
StrComp関数とは?
StrComp関数は、2つの文字列を比較して結果を返す関数です。
比較結果によって次の値を返します。
| 戻り値 | 意味 |
|---|---|
| 0 | 一致 |
| -1 | 文字列1 < 文字列2 |
| 1 | 文字列1 > 文字列2 |
| Null | どちらかがNull |
基本:StrComp関数の使い方
基本構文はこちらです。
StrComp(文字列1, 文字列2, [比較方法])
基本例
MsgBox StrComp("ABC", "ABC")
→ 0(同じ)
一致判定で使う
If StrComp("Excel", "Excel") = 0 Then
MsgBox "一致しています"
End If
大文字・小文字を区別する
デフォルトでは区別されます。
MsgBox StrComp("ABC", "abc")
→ -1(異なる)
大文字・小文字を区別しない
vbTextCompare を使用します。
MsgBox StrComp("ABC", "abc", vbTextCompare)
→ 0(同じ)
比較方法一覧
| 定数 | 内容 |
|---|---|
| vbBinaryCompare | 大文字小文字を区別 |
| vbTextCompare | 大文字小文字を区別しない |
セルの値を比較する
If StrComp(Range("A1").Value, Range("B1").Value) = 0 Then
MsgBox "同じです"
End If
ログインID比較などで使う
Dim userID As String
userID = InputBox("IDを入力してください")
If StrComp(userID, "admin", vbTextCompare) = 0 Then
MsgBox "管理者です"
End If
=演算子との違い
通常比較:
If str1 = str2 Then
StrComp:
If StrComp(str1, str2) = 0 Then
StrCompの方が比較方法を細かく制御できます。
実務での活用例
- ログイン判定
- データ一致チェック
- 検索処理
- 入力値比較
比較処理では非常によく使われます。
注意点
① Nullに注意
どちらかがNullの場合はNullが返ります。
② 戻り値はTrue/Falseではない
0・1・-1で判定します。
安全な書き方(おすすめ)
Dim str1 As Variant
Dim str2 As Variant
str1 = Range("A1").Value
str2 = Range("B1").Value
If Not IsNull(str1) And Not IsNull(str2) Then
If StrComp(str1, str2, vbTextCompare) = 0 Then
MsgBox "一致"
End If
End If
よくあるエラーと対処法
① 一致しない
大文字・小文字の違いを確認してください。
② Nullでエラーになる
IsNullで事前チェックしてください。
③ 戻り値をTrue/Falseと勘違いする
0・1・-1で判定します。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- StrCompは文字列比較を行う関数
- 比較方法を指定できる
- 大文字・小文字制御が可能
- 実務では比較処理で頻出
StrComp関数を使いこなせるようになると、文字列比較の精度と柔軟性が大きく向上します。
実務では非常に便利なので、ぜひマスターしておきましょう。

コメント