Instr関数

 ある文字列を別の文字列の中から探し、最初に見つかったものが何文字目にあるのか(何文字目から始まっているのか)を表す値を返します。

使用例

表記例出力例説明
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)04番目の引数0は大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない)ことを表します。4番目の引数を指定した場合、検索開始位置の指定は省略できません。また、指定した文字列が見つからない場合は0が返されます
InStr(1,"ABCDEあいうえおABCDE","bc",1)24番目の引数1は大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する)ことを表します。
InStr("ABCDEあいうえおABCDE","")1空文字を検索すると1文字目にあるものとみなされます

書式

InStr([検索開始位置,]文字列,検索対象文字列[,比較モード])

 最初の引数(検索開始位置)が省略可能というちょっと珍しい関数です。ただし、比較モードを指定した場合は検索開始位置を省略できません。
 比較モードとして指定できる値と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。

比較モード意味
-1Option Compare ステートメントの設定により比較
0バイナリモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない))
1テキストモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する))
2データベースの情報に基づいて比較

備考

 Left関数(Right関数)と組み合わせて、文字列中の特定の文字まで(特定の文字以降)を取り出すといった目的でよく用いられます。