質問: Right(t, 10-5)=12/31 という結果がそれぞれの変数に代入されるかと思ったのですが。 tf=10/1~ tt=12/31 実際にはこうなります。 なぜでしょうか?
回答: 式の通り処理されての結果ですね。 InStrRev(t, "~") では 10/1~12/31 は10文字なので「~」は5文字目。 Left(t, Len(t) - InStrRev(t, "~")) では、tの文字列「10/1~12/31」から Len(t)で10を得て InStrRev(t, "~")で5得る。 結果 Left(t, Len(t) - InStrRev(t, "~")) で値にして表現すると Left("10/1~12/31", 10 - 5) ですから、先頭から5文字取得すれば 「10/1~」 を得るのは当然。 10/1 を得たいのであれば、「~」が何文字目にあるかで求めた値を-1しないとダメ。 tf = Left(t, Len(t) - InStrRev(t, "~") - 1) >なぜでしょうか? 「何番目にあるか」の値をそのまま使っているから。