2011年12月11日日曜日

[ExcelVBA] InStr関数


■構文
InStr([start, ]string1, string2[, compare])

■説明
文字列の先頭から検索し最初に一致した文字位置(先頭基準)を返す
第一引数:(省略可能)検索の開始位置を示す値を指定。省略時先頭の文字から検索します。
第二引数:検索対象の文字列を指定。
第三引数:検索対象文字列内から探し出す文字列を指定。
第四引数:(省略可能)文字列比較の比較モードを指定。省略時、Option Compareステートメントの設定にしたがいます。
定数説明
vbUseCompareOption-1Option Compare ステートメントの設定を使用して比較を行います。
vbBinaryCompare0バイナリ モードの比較を行います。
vbTextCompare1テキスト モードの比較を行います。


■サンプルコード
Option Explicit

Sub SampleCode()
    '一番最初の文字にヒットすると1を返します。
    Debug.Print InStr("Visual Basic", "V") '1
    
    '一番最後の文字にヒットする場合 Len(文字列)と同じ値になります
    Debug.Print InStr("Visual Basic", "c") '12
    Debug.Print Len("Visual Basic")        '12
        
    'ヒットしない場合は0を返す
    Debug.Print InStr("Visual Basic", "X")    '0
    
    '検索開始位置を指定
    Debug.Print InStr("Visual Basic", "i") '2
    Debug.Print InStr(3, "Visual Basic", "i") '11
      
    '文字列比較、デフォルト(バイナリモード)、テキストモードの比較
    '大文字/小文字
    Debug.Print InStr(1, "Aa", "a")                '2
    Debug.Print InStr(1, "Aa", "a", vbTextCompare) '1

    '全角/半角
    Debug.Print InStr(1, "AA", "A")                '2
    Debug.Print InStr(1, "AA", "A", vbTextCompare) '1
    
    'ひらがな/カタカナ
    Debug.Print InStr(1, "あア", "ア")                '2
    Debug.Print InStr(1, "あア", "ア", vbTextCompare) '1

End Sub

0 件のコメント: