ある文字列の中から指定した文字列が最初に見つかった位置をバリアント型 (内部処理型 Long の Variant) で返します。
構文
InStr ([start, ] string1, string2 [, compare ] )
InStr 関数の構文には、次の引数があります。
引数 |
説明 |
---|---|
start |
省略可能。 検索の開始位置を設定する数式。 省略した場合、先頭の文字から検索されます。 start に Null が含まれる場合、エラーが発生します。 compare を指定した場合、start は必須となります。 |
string1 |
必須。 検索場所となる文字列式を指定します。 |
string2 |
必須。 検索場所となる文字列式を指定します。 |
compare |
省略可能。 文字列比較の種類を指定します。 compare が Null の場合、エラーが発生します。 compare を省略した場合、OptionCompare 設定により、比較の種類が決定されます。 ロケール固有のルールで比較するために有効な LCID (LocaleID) を指定します。 |
ヒント: 式ビルダーには IntelliSense があるため、式に必要な引数を確認できます。
設定
compare 引数の設定:
定数 |
値 |
説明 |
---|---|---|
vbUseCompareOption |
-1 |
Option Compare ステートメントの設定を使用して、比較を実行します。 |
vbBinaryCompare |
0 |
バイナリの比較を実行します。 |
vbTextCompare |
1 |
テキストの比較を実行します。 |
戻り値
条件 |
InStr により返される値 |
---|---|
string1 がゼロ長 |
0 |
string1 が Null |
Null |
string2 がゼロ長 |
start |
string2 が Null |
Null |
string2 が見つからない |
0 |
string2 が string1 内で見つかる |
検索が見つかった位置 |
start > string2 |
0 |
解説
InStrB 関数は、文字列に含まれるバイト データと共に使用されます。 InStrB は、ある文字列が別の文字列内で最初に発生する文字位置を返すのではなく、バイト位置を返します。
例
式で InStr 関数を使用する 式を使用できるあらゆる箇所で InStr を使用できます。 たとえば、IP アドレスが含まれるフィールドで最初のピリオド (.) の位置を見つける場合、次のように InStr を使用してそれを見つけることができます。
InStr(1,[IPAddress],".")
InStr 関数は IPAddress フィールドの各値を調べ、最初のピリオドの位置を返します。 そのため、IP アドレスの最初の部分が 10.の場合、この関数は値 3 を返します。
その後、InStr 関数の出力で動作する他の関数を次のように使用し、最初のピリオドの前にある IP アドレス部分を抽出できます。
Left([IPAddress],(InStr(1,[IPAddress],".")-1))
この例では、 InStr(1,[IPAddress],".") は、最初の期間の位置を返します。 1 を減算すると、最初のピリオドより前の文字数 (この場合は 2) が決まります。 次に、Left 関数は IPAddress フィールドの左部分から多数の文字を抽出し、値 10 を返します。
VBA コードで InStr を使用する
注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。
この例では InStr 関数を使用し、ある文字列が別の文字列内で最初に発生する位置を返します。
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default
' (last argument is omitted).
MyPos = Instr(SearchString, SearchChar) ' Returns 9.
MyPos = Instr(1, SearchString, "W") ' Returns 0.