即効テクニック |
引数String1で指定した文字列の中からstring2で指定した文字列を前方から検索し、検索文字列が最初に見つかった場所を返します。引数Compareで指定する比較モードは次の一覧のとおりです。 ・引数Compareで指定する比較モードを表す定数一覧(VbCompareMethod) 定数 値 説明 vbUseCompareOption -1 Option Compare ステートメントの設定を使用 して比較 vbBinaryCompare 0 バイナリ モードの比較 vbTextCompare 1 テキスト モードの比較 vbDatabaseCompare 2 Microsoft Access の場合のみ有効。データベース に格納されている設定に基づいて比較 なお、InStr関数の戻り値は次の表のとおりです。 ・InStr関数の戻り値一覧 内容 値 String1が長さ0の文字列("")のとき 0 String1がNull値のとき Null 値 String2が長さ0の文字列("")のとき start String2がNull値のとき Null 値 String2が見つからないとき 0 String2がString1内で見つかったとき 見つかった文字列の位置 Startの値がString1の文字数を超えるとき 0 構文 InStr(Start, String1, String2, Compare) InStrB(Start, String1, String2, Compare) 設定項目 内容 Start 検索開始位置を指定。省略時は1 [省略可能] String1 検索対象の文字列を指定 [省略不可] String2 検索文字列を指定 [省略不可] Compare 文字列比較のモード指定(一覧参照) [省略可能] 次のサンプルは、メールアドレスに含まれる「@」の位置をInStr関数で検索し、その前後のユーザー名、ドメイン名を取り出します。 ●サンプル●
Sub InStrSamp1() Dim myStr As String Dim n As Integer '---変数myStrにメールアドレス設定 myStr = "tanaka@aaaaa.co.jp" '---「@」の位置を取得 n = InStr(myStr, "@") MsgBox "メールアドレス" & myStr & "の" & Chr(13) & Chr(13) & _ "ユーザー名 : " & Left(myStr, n - 1) & Chr(13) & _ "ドメイン名 : " & Mid(myStr, n + 1) End Sub
●ポイント● 比較モードのバイナリモードとテキストモードの違いは下の一覧のとおりです。Excel2000VBAの既定ではバイナリモードが使用されます。 ・バイナリモードとテキストモードの違い 内容 例 バイナリモード テキストモード 大文字と小文字 「ABCDE」と「abcde」 異なる文字列 同じ文字列 全角と半角 「ABCDE」と「ABCDE」 異なる文字列 同じ文字列 ひらがなとカタカナ 「あいうえお」と「アイウエオ」異なる文字列 同じ文字列