文字操作 指定文字列から特定文字を最初から検索・最後から検索InStr関数

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

InStr 関数

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

  • 構文

  • InStr([start, ]string1, string2[, compare])
  • Instr 関数の構文は、次の引数から構成されます。
  • 指定項目 内容

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

  • 引数 compare

    の設定値は次のとおりです。
  • 定数 値 説明
  • 定数 説明
    vbUseCompareOption -1 OptionCompareステートメントの設定を使用して比較を行います。
    vbBinaryCompare 0 バイナリモードの比較を行います。
    vbTextCompare 1 テキストモードの比較を行います。
    vbDatabaseCompare 2 MicrosoftAccessの場合のみ有効。データベースに格納されている設定に基づいて比較を行います。
  • 戻り値

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

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

    InStr 関数の使用例

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

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 を返します。

'<モードの違い>
'┌─────────┬───┬────┬────┐
'│内容              │例    │バイナリ│テキスト│
'├─────────┼───┼────┼────┤
'│大文字/小文字     │A/a   │異      │同      │
'│全角/半角         │A/A  │異      │同      │
'│ひらがな/カタカナ │あ/ア │異      │同      │
'└─────────┴───┴────┴────┘



InStrRev 関数

ある文字列 (string1) の中から指定された文字列 (string2) を最後の文字位置から検索を開始し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。

  • 構文

  • InstrRev(stringcheck, stringmatch[, start[, compare]])
  • InstrRev 関数の構文は、次の名前付き引数から構成されます。
  • 指定項目 説明

  • stringcheck
    必ず指定します。検索先の文字列式を指定します。
  • stringmatch
    必ず指定します。検索する文字列式を指定します。
  • start
    省略可能です。各検索の開始位置を設定する数式を指定します。引数 start を省略すると -1 が使用され、最後の文字位置から検索を開始します。引数 start に Null 値が含まれると、エラーになります。
  • compare
    省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。引数 compare を省略すると、バイナリ モードで比較が行われます。設定する値については、次の「設定値」を参照してください。
  • 設定値

  • 引数 compare の設定値は次のとおりです。
  • 定数 値 説明

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

  • InStrRev 関数の戻り値は次のとおりです。
  • 内容
    string1 が長さ 0 の文字列 (") のとき 0
    string1 が Null 値のとき Null 値
    string2 が長さ 0 の文字列 (") のとき start
    string2 が Null 値のとき Null 値
    string2 が見つからないとき 0
    string2 が string1 内で見つかったとき 見つかった文字列の位置
    start の値が string1 の文字数を超えるとき 0
  • 解説

  • InstrRev関数の構文は、Instr関数の構文とは異なります。

 

 

 

2000年01月01日|[VBサンプルコード]:[文字操作]