Excel VBAのInStr関数を徹底解説!画像・コードあり

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。
SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。
お気軽にお問い合わせください。
Excel VBAのInStr関数を徹底解説!画像・コードあり
Excel VBAを使っていると、特定の文字列が別の文字列の中に含まれているかを確認したいことがあります。そんなときに役立つのがInStr
関数です。本記事では、InStr
関数の使い方や具体例を解説します。
InStr関数とは?
InStr
関数は、指定した文字列の中に、特定の文字列が最初に現れる位置を返す関数です。見つからない場合は0を返します。

InStr関数の構文
InStr([start], string1, string2, [compare])
start: 検索を開始する位置(省略可)
string1: 検索対象の文字列
string2: 検索する文字列
compare: 大文字小文字を区別するかどうか(省略可)
よく使うパターンは、
positionText = InStr(“Hello World”, “World”)
で7を取得する方法です。
Cmpareを指定していない場合、大文字小文字の区別して比較します。
Compare引数
定数 | 値 | 説明 |
---|---|---|
vbUseCompareOption | -1 | Option Compare ステートメントで指定された比較方法を使用します。これにより、モジュール全体での設定に従った比較が行われます |
vbBinaryCompare | 0 | 意味: 大文字小文字を区別して比較します。 例: “A”と”a”は異なる文字として扱われます。 用途: 正確な一致が必要な場合に使用します。 |
vbTextCompare | 1 | 意味: 大文字小文字を区別せずに比較します。 例: “A”と”a”は同じ文字として扱われます。 用途: ユーザー入力など、柔軟な比較が必要な場合に使用します。 |
具体例
Sub test()
Dim positionBinary As Integer
Dim positionText As Integer
Dim positionOption As Integer
positionBinary = InStr(1, "Hello World!", "world", vbBinaryCompare) ' 0が返される
positionText = InStr(1, "Hello World!", "world", vbTextCompare) ' 7が返される
MsgBox positionBinary & "と" & positionText
End Sub

positionBinary
:"Hello World!"
の中に"world"
が存在しないため、0が返されます。- 大文字小文字を区別しているため、”W”と”w”が異なる文字として扱われます。
positionText
:"Hello, World!"
の中に"world"
が存在するため、8が返されます。- 大文字小文字を区別しないため、”W”と”w”が同じ文字として扱われます。
vbUseCompareOption
vbUseCompareOptionを指定すると、Option Compareで設定された比較方法が適用されます。つまり、モジュールの冒頭でどちらの比較方法を選んでいるかによって、InStr関数の比較が変わります。
Option Compare Text
Option Explicit
Sub TestCompare()
Dim position As Integer
position = InStr("Hello World!", "world")
MsgBox position
End Sub

Option Compare Binary
Option Explicit
Sub TestCompare()
Dim position As Integer
position = InStr("Hello World!", "world")
MsgBox position
End Sub

注意点
使用する際の注意点を2つあげておきます。
startを指定しない場合、検索は文字列の最初から始まる
compareを指定しない場合、大文字小文字の区別が行われる
まとめ
本記事では、Excel VBAのInStr
関数について解説しました。特定の文字列が何文字目からあるのかや、存在するかの検索する際に非常に便利な関数ですので、ぜひ活用してみてください。

稲垣
- Excel、ACCESSでのシステム開発が得意
- ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
- 自家焙煎するほどのコーヒー好き
- 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
- 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
- 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
- お客様にとって本当に良いことかを第一に考える人
コメント