ある文字列を別の文字列の中から探し、最初に見つかったものが何文字目にあるのか(何文字目から始まっているのか)を表す値を返します。
使用例
表記例 | 出力例 | 説明 |
---|---|---|
InStr("ABCDEあいうえおABCDE","B") | 2 | 「B」という文字は「ABCDEあいう…」という文字列の中の2文字目にありますので2を返します。「B」は2つありますが最初に見つかった位置を返します |
InStr("ABCDEあいうえおABCDE","BC") | 2 | 「BC」という文字列は同じく2文字目から始まりますので2を返します |
InStr(6,"ABCDEあいうえおABCDE","BC") | 12 | 検索開始位置を指定することもできます。6文字目以降から「BC」という文字列を検索すると12文字目から始まっているものとみなされ12が返されます。検索開始位置から数え始めるのではなく、あくまで文字列の先頭から数えた位置が返されます |
InStr("ABCDEあいうえおABCDE","bc") | 2 | 特に指定しない限り大文字と小文字、全角と半角、ひらがなとカタカナは区別されません(同一視されます) |
InStr(1,"ABCDEあいうえおABCDE","bc",0) | 0 | 4番目の引数0は大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない)ことを表します。4番目の引数を指定した場合、検索開始位置の指定は省略できません。また、指定した文字列が見つからない場合は0が返されます |
InStr(1,"ABCDEあいうえおABCDE","bc",1) | 2 | 4番目の引数1は大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する)ことを表します。 |
InStr("ABCDEあいうえおABCDE","") | 1 | 空文字を検索すると1文字目にあるものとみなされます |
書式
InStr([検索開始位置,]文字列,検索対象文字列[,比較モード])
最初の引数(検索開始位置)が省略可能というちょっと珍しい関数です。ただし、比較モードを指定した場合は検索開始位置を省略できません。
比較モードとして指定できる値と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。
比較モード | 意味 |
---|---|
-1 | Option Compare ステートメントの設定により比較 |
0 | バイナリモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない)) |
1 | テキストモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する)) |
2 | データベースの情報に基づいて比較 |
備考
Left関数(Right関数)と組み合わせて、文字列中の特定の文字まで(特定の文字以降)を取り出すといった目的でよく用いられます。