Access InstrRev関数は文字列から指定した文字列を後ろから検索し、最初に見つかった位置を、前から何文字目かを返す関数です。
■ 構文
InstrRev(stringcheck, stringmatch[, start[, compare]])
■ 引数
stringcheck : (必須) 検索対象を指定します。
stringmatch : (必須) 検索する文字列を指定します。
start : (省略可) 検索の開始位置を指定します。省略すると -1 が設定され、最後の位置から検索します。
compare : (省略可) 比較のモードを表す数値を指定します。省略すると、バイナリ モードになります。
compareの定数
定数 値 説明
vbUseCompareOption :(-1) Option Compareステートメントの設定を使用して比較を行います。
vbBinaryCompare :(0) バイナリモードで比較を行います。
vbTextCompare :(1) テキストモードで比較を行います。
vbDatabaseCompare :(2) Microsoft Access の場合のみ有効。データベースに格納されている設定に基づいて比較を行います。
■ 戻り値
- 0 : string1が長さ0 ("")
- Null値 : string1がNull値
- start : string2が長さ0 ("")
- Null値 : string2がNull値
- 0 : string2が見つからない
- 見つかった位置 : string2 がstring1内で見つかったとき
- 0 : startのがstring1の文字数を超えるとき
■ Access実行画面
「InStr実行」 : 検索対象文を前から検索し、検索結果に表示します。
前側の「文字」が検索され、21目となっています。
「InStrRev実行」 : 検索対象文を後ろから検索し、検索結果に表示します。
後側の「文字」が検索され、前から25文字目となっています。
■ Access VBA 実行コード
Option Compare Database
Private Sub Form_Load()
Me!テキスト0.SetFocus
Me!テキスト0.Text = "Access関数 Instr: 何文字目にあるかを検索する関数"
Me!テキスト2.SetFocus
Me!テキスト2.Text = "文字"
End Sub
' InStrRev関数
Private Sub コマンド0_Click()
Dim ln1 As Integer
Dim s1 As String
Dim s2 As String
Me!テキスト0.SetFocus
s1 = Me!テキスト0.Text
Me!テキスト2.SetFocus
s2 = Me!テキスト2.Text
ln1 = InStrRev(s1, s2)
Me!テキスト1.SetFocus
Me!テキスト1.Text = ln1
End Sub
' InStr関数
Private Sub コマンド5_Click()
Dim ln1 As Integer
Dim s1 As String
Dim s2 As String
Me!テキスト0.SetFocus
s1 = Me!テキスト0.Text
Me!テキスト2.SetFocus
s2 = Me!テキスト2.Text
ln1 = InStr(1, s1, s2)
Me!テキスト6.SetFocus
Me!テキスト6.Text = ln1
End Sub