- 締切済み
StrReverseメソッド
Sub test() Dim i As Long i = InStr(1, StrReverse("1234567"), "123") End Sub なぜこの場合の返り値が0なのでしょうか? 1234567の中に123は含まれるから、右から何文字目にあるかが返ると思ったら、0です。 i = InStr(1, "1234567", "123") のように、左から何文字目かを取得するなら、1が返ります。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
回答No.1
はて? StrReverse("1234567")の結果は「7654321」です。123は含まれてませんから、instrの計算結果はゼロです。 右から何文字目にあるか(何が? 「一番左に」見つかったのが?それとも「右から」探して見つけたのが?)計算しかったのでしたら、ふつーに例えば msgbox len("123456712345") - instr("123456712345", "123") + 1 msgbox len("123456712345") - instrrev("123456712345", "123") + 1 みたいに勘定するのでも十分です。 もちろん msgbox instr(1, strreverse("1234567"), strreverse("123")) + len("123")-1 みたいでも構いませんが。