InStr関数

InStr関数は、VBA関数の中で文字列操作関数に分類される関数です。

目次

スポンサー リンク

InStr関数とは

InStr関数は、バリアント型 (内部処理形式 Long の Variant) の値を返します。ある文字列 (string1) の中から指定した文字列 (string2) を検索し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。

構文InStr([start, ]string1, string2[, compare])
引数省略説明
start 検索の開始位置を表す数式を指定します。省略すると、先頭の文字から検索されます。引数 start に Null 値が含まれている場合、エラーが発生します。引数 compare を指定した場合は、start も指定する必要があります。
string1 ×検索対象となる文字列式を指定します。
string2 ×引数 string1 内で検索する文字列式を指定します。
compare compare文字列比較の比較モードを指定する番号を設定します。引数 compare が Null 値の場合は、エラーが発生します。引数 compare を指定した場合は、引数 start も指定する必要があります。引数 compare を省略すると、Option Compare ステートメントの設定に応じて、比較モードが決まります。ローカル固有の比較ルールを使用するには、有効なLCID (LocaleID) を指定します。

引数 compare

定数説明
vbUseCompareOption -1 Option Compare ステートメントの設定を使用して比較を行います。
vbBinaryCompare 0 バイナリ モードの比較を行います。
vbTextCompare 1 テキスト モードの比較を行います。
vbDatabaseCompare 2 Microsoft Access の場合のみ有効。データベースに格納されている設定に基づいて比較を行います。

戻り値

内容
string1 が長さ 0 の文字列 ("") のとき 0
string1 が Null 値のとき Null 値
string2 が長さ 0 の文字列 ("") のとき start
string2 が Null 値のとき Null 値
string2 が見つからないとき 0
string2 が string1 内で見つかったとき 見つかった文字列の位置
start の値が string1 の文字数を超えるとき 0

文字列をバイト データとして扱う場合は、InStrB 関数を使用します。InStrB 関数は検索結果をバイト位置 (先頭からその位置までのバイト数) で返します。

InStr関数のサンプルコード

次の例は、InStr 関数を使って、ある文字列の中から指定した文字列を検索し、最初に見つかった位置を返します。


Sub sample()

 Dim SearchString, SearchChar, MyPos
 SearchString ="XXpXXpXXPXXP"            ' 検索対象の文字列を定義します。
 SearchChar = "P"                        ' "P" を検索します。

 ' 文字単位の比較を位置 4 から開始すると、6 が返されます。
 MyPos = Instr(4, SearchString, SearchChar, 1)    

 ' ビット単位の比較を位置 1 から開始すると、9 が返されます。
 MyPos = Instr(1, SearchString, SearchChar, 0)

 ' 既定のビット単位の比較を行います(最後の引数を省略した場合)。
 MyPos = Instr(SearchString, SearchChar)    ' 9 を返します。

 MyPos = Instr(1, SearchString, "W")        ' 0 を返します。

End Sub

実行結果

解説

文字列操作関数一覧

関数名内容
Asc文字列内にある最初の文字の文字コードを返します。
AscB文字列内にある最初のバイトコードを返します。
AscW文字列内にあるISOコードの文字を返します。
Chr指定したコードに対応する文字を返します。
ChrB指定したコードに対応するバイトデータを返します。
ChrW指定したコードに対応するISOの文字を返します。
Format式を指定した書式に変換します。
Hex指定した文字列を16進数で返します。
InStr検索対象文字列の指定した位置から指定した文字列を検索し、最初に見つかった文字位置を返します。
InstrB検索対象文字列の指定したバイト位置から指定した文字列を検索し、最初に見つかったバイト位置を返します。
LCase大文字のアルファベットを小文字に変換します。
Left文字列の左端から指定した文字数分の文字列を抽出します。
LeftB文字列の左端から指定したバイト数分の文字列を抽出します。
Len文字列の文字数を返します。
LenB文字数のバイト数を返します。
Ltrim文字列の先頭のスペースを削除した文字列を抽出します。
Mid文字列の指定した位置から指定した文字数分を抽出します。
MidB文字列の指定したバイト位置から指定したバイト数分を抽出します。
Oct指定した文字列を8進数で返します。
Right文字列の右端から指定した文字数分の文字列を抽出します。
RightB文字列の右端から指定したバイト数分の文字列を抽出します。
Rtrim文字列の末尾のスペースを削除した文字列を抽出します。
Space指定した数のスペースを返します。
Str数式の値を文字列に返します。
StrComp文字列を比較した結果を返します。
StrConv文字列を変換した結果を返します。
String指定した文字コードに対応する文字を指定した文字数だけ並べた文字列を返します。
Trim文字列の先頭と末尾のスペースを削除した文字列を抽出します。
Ucase小文字のアルファベットを大文字に変換します。
Val文字列を数値に変換します。
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

スポンサー リンク

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

スポンサー リンク

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。