VBAの文字列の比較 – StrComp

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 5月 3, 2022

VBAでは、StrComp関数を使用して2つの文字列を比較することができます。このチュートリアルでは、この関数をさまざまな比較方法で使用する方法を学びます。

VBAのLike演算子を使って不正確な一致を比較する方法が知りたい場合は、ここをクリックしてください:VBAのLike演算子

比較演算子の使い方を知りたい方は、こちらをご覧ください:VBAの比較演算子 – Not Equal to & More

StrComp関数を使用して2つの文字列を比較する

StrComp関数は、2つの文字列と比較方法を引数として受け取ります。比較の方法は3つあります。

  • vbBinaryCompare – 2つの文字列をバイナリで比較します。(大文字と小文字を区別します。)
  • vbTextCompare – 2つの文字列をテキストで比較します。(大文字と小文字を区別しません。)
  • vbDatabaseCompare – このメソッドは、Microsoft Accessでのみ利用可能で、VBAでは利用できません。

デフォルトでは、この関数はバイナリ方式を使用します。つまりこの引数を省略すると、この関数は大文字と小文字を区別します。

この関数は以下の結果を返します。

  • 0 – 文字列が等しい場合
  • -1 – 文字列1が文字列2より小さい場合
  • 1 – 文字列1が文字列2より大きい場合
  • Null – 文字列のいずれかが空である場合

以下はそのコード例です。

Dim intResult As Integer

intResult = StrComp("Computer", "Computer")

この例では、文字列“Computer”“Computer”が等しいかどうかを、デフォルトの比較方法(バイナリ)を使用して確認し、結果がintResult変数に格納されます。画像でわかるように、両方の文字列は等しいので、intResultの値は0になります。

vba compare strings strcomp binary 文字列 比較 バイナリ

画像1. VBAでバイナリ方式とStrComp関数を使う

バイナリ方式とテキスト方式でStrComp関数を使用する

ここで、バイナリ方式とテキスト方式の使い分けを確認します。バイナリ方式では、各文字に2進数が割り当てられているので、大文字と小文字は別の文字となります。一方、テキスト方式では、「S」と「s」を同じ文字と見なします。大文字と小文字を区別しない関数にしたい場合は、第3引数にvbBinaryCompareを設定する必要があります。以下はそのコードです。

Dim intResult1 As Integer
Dim intResult2 As Integer  

intResult1 = StrComp("Computer", "CompuTer")

intResult2 = StrComp("Computer", "CompuTer", vbTextCompare)

文字列“Computer“と“CompuTer “を、両方式を使って比較してみましょう。

intResult1という変数にはバイナリ方式による値が、intResult2にはテキスト方式による値が格納されます。ローカルウィンドウでこの2つの変数の値を見ることができます。

vba compare strings strcomp 文字列 比較

画像2. StrComp関数をバイナリメソッドとテキストメソッドで使用した場合

intResult1の値は1であり,バイナリ方式では2つの文字列が異なることを意味します。テキスト方式の場合、この2つの文字列は等しいので、intResult2の値は0となります。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples