VBAで文字列を検索する方法を紹介!

VBAで文字列を検索する方法を紹介!

Microsoft ExcelのVBAで、特定の文字列の中から指定した文字列を検索したいと思ったことはありませんか?InStr関数を使用して検索してみましょう。この記事では、Microsoft ExcelのVBAで文字列を検索する方法をご紹介していきます。


目次[非表示]

  1. VBAで文字列を検索したい
  2. VBAで文字列を検索する方法

VBAで文字列を検索したい

Microsoft ExcelのVBAで、文字列検索を行いたいと思ったことはありませんか?VBAで特定の文字列の中から指定の文字列が含まれているかどうか検索を行う場合は、「InStr関数」を使用することで文字列の検索を行うことができますよ。この記事では、Microsoft ExcelのVBAで文字列を検索する方法をご紹介していきます。

VBAで文字列を検索する方法

それでは、ExcelのVBAで文字列を検索する方法を説明していきます。冒頭で説明している通り、VBAで文字列を検索するには「InStr関数」を使用します。InStr関数関数とは、特定の文字列の中から指定した文字列を検索して、最初に見つかった文字の位置を返すことのできる文字列処理関数です。VBAやマクロにおいては、使用頻度の高い関数です。

InStr関数の数式

InStr関数の数式は「InStr([start, ]string1, string2[ ,compare])」となります。開始位置である[start, ]と比較形式の[compare, ]については、省略可能です。引数の説明は下記の通りとなります。

  • start:検索の開始位置を設定する数式を指定する基本的に検索は文字列の先頭から行うため、省略可能です。引数startに「Null」が含まれているとエラーが返ります。引数compareを指定している場合は、引数startも指定する必要があります。
  • string1:検索対象の文字列を指定します。省略不可。
  • string2:検索する文字列を指定します。省略不可。
  • compare:文字列比較のモード指定を行います。省略可能で、省略した場合はバイナリモードで比較を行います。「vbUseCompareOption(-1)」ではOption Compareで指定した形式での比較・「vbBinaryCompare(0)」では大文字と小文字を区別して比較(バイナリ比較)・「vbTextCompare(1)」では大文字と小文字、全角と半角を区別せず比較(テキスト比較)します。

返り値

  • string1の文字列が空白:0
  • string1がNull値:Null値
  • string2の文字列が空白:0
  • string2がNull値:Null値
  • string2がstring1に見つからない:0
  • string2がstring1で見つかった:文字列の最初の位置
  • startの値がstring2の文字数より大きい:0

使用例

InStr関数の仕様例を説明します。「InStr("ABCDEFG","C")」と入力した場合、文字列の「ABCDEFG」の中から文字列「C」を検索します。そして、文字列「C」が見つかった位置を番号で返します。文字列「ABCDEFG」の中で文字列「C」は3番目にあるので、「3」が返ってきます。

例えばこれが「InStr(“ABCDEFG”, “CD”)」とした場合でも、返り値は「3」です。InStr関数では検索対象の文字列に2文字以上の文字列を指定した場合は、先頭にある文字の位置を返り値として返すようになっています。

下記のコードを入力して「実行」ボタンをクリック
VBAで、簡単にマクロを入力してみたものがこちらです。下記のコードを入力して「実行」ボタンをクリックしてみましょう。
Sub Instl_1()
    Dim String1 As String
    Dim String2 As String
    
    String1 = "あいうえお"
    String2 = "う"

    MsgBox InStr(String1, String2)
End Sub

返り値に「3」と表示されている
文字列「あいうえお」の中の文字列「う」は3番目に配置されているため、返り値も「3」と返ってきています。

このように、InStr関数を使用することで特定の文字列の中から指定の文字列の検索ができますよ。


関連記事