Excel VBA Instrを使用して文字列や配列内の要素を検索する方法

 

Excel VBAの Instrを使用して文字列や配列内の要素を検索します。具体的な使い方や、注意点やサンプルコードを紹介します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA Instrで配列内要素を検索する利用

以下のようなシーンで利用されます。

・配列内の特定の要素を検索し、その位置を知りたい場合に使用します。例えば、配列内の特定の値のインデックスを見つけたり、配列内の文字列パターンを検索する場合などに利用します。

 

position = InStr([start], string1, string2, [compare])

・「start」: 検索を開始する位置を指定します。省略可能で、デフォルトは1です。

・「string1」: 検索される文字列を指定します。

・「string2」: 検索する文字列を指定します。

・「compare」: 比較方法を指定します。省略可能です。

 

ポイント

startが省略された場合、検索は文字列の先頭から開始します。

 

Excel VBA Instrで配列内要素を検索するサンプルコード

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

Option Explicit

Sub ExampleUsage()
    Dim position As Integer
    Dim myArray(3) As String
    Dim search_string As String
    Dim i As Integer
    
    ' 配列の初期化
    myArray(0) = "apple"
    myArray(1) = "banana"
    myArray(2) = "orange"
    myArray(3) = "banana"
    
    ' 検索する文字列を設定
    search_string = "banana"
    
    ' 配列内での検索を実行
    For i = LBound(myArray) To UBound(myArray)
        position = InStr(1, myArray(i), search_string)
        If position > 0 Then
            MsgBox "文字列 '" & search_string & "' は配列の " & i & " 番目に見つかりました。"
            Exit For ' 最初に見つかったインデックスのみを表示し、ループを終了します
        End If
    Next i
    
    If position = 0 Then
        MsgBox "文字列 '" & search_string & "' は配列内で見つかりませんでした。"
    End If
End Sub

サンプルコードは、配列内の要素を検索して文字列  banana  を見つけます。見つかった場合、そのインデックスをメッセージボックスで表示します。

 

Excel VBA Instrで文字列内で特定文字列や文字が最初に出現する位置を返す

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問