InStr 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

ある文字列の中から指定した文字列が最初に見つかった位置をバリアント型 (内部処理型 LongVariant) で返します。

例を参照する

構文

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

InStr 関数の構文には、次の引数があります。

引数 説明
start 省略可能。 検索の開始位置を設定する数式。 省略した場合、先頭の文字から検索されます。 start に Null が含まれる場合、エラーが発生します。 compare を指定した場合、start は必須となります。
string1 必須。 検索場所となる文字列式を指定します。
string2 必須。 検索場所となる文字列式を指定します。
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 内で見つかる 検索が見つかった位置
string2 > 開始 0

解説

InStrB 関数は、文字列に含まれるバイト データと共に使用されます。 InStrB は、ある文字列が別の文字列内で最初に発生する文字位置を返すのではなく、バイト位置を返します。

式で InStr 関数を使用するInStr は、式を使用できる場所であればどこでも使用できます。 たとえば、IP アドレス (IPAddress という名前) を含むフィールドで最初のピリオド (.) の位置を検索する場合は、 次のように 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.

関連項目

文字列関数とその使い方