• ベストアンサー

VBSで比較条件について

Y = 20040601 x = Date g = Mid(x,1,4) & Mid(x,6,2) & Mid(x,9,2) If g < x Then msgbox "w" Else msgbox "y" End If の時にMsgbox にWが入ります。 Yが入る方法はありますでしょうか 教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VBSにおいてでも、日付(Date関数が与える日付も同じ)は1900年1月1日を1として、その日が第何日目か(日付シリアル値)で表します。それは値としては、単なる正の整数です。今日は38140です。 一方ご質問にあるgで出てくるMID関数は、文字列を部分的に切り出す関数です。ただしxが数字の場合は、文字列のように扱って切りだしてくれます(エクセルなども同じお節介ご親切機能)。 しかしMID(x,1,4)は日付の「年」の数字ではなく、3814となります。そして3814も数値ではなく文字列でしょう。 それと20040601と言う数を比較しても、意味がないことはわかりますね。 ですからYを20040601ではなく、2004/6/1の日付シリアル値にしてくれる関数を使って38139に直さないといけません。VBSではDateserialやDatevalueがありますからそれを使います。y=Dateserial(2004,6,1)とし、gとxでなくyとxを比較します。エクセル・アクセス・VBS・VBも日付については、同様のことに注意が必要です。

syusyusyusyu
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

質問の内容がよくわかりません。 IF文は、「g<Y」じゃないでしょうか? また、Yは数値でgは文字列になっています。比較対照が違いますのでYも文字列にしましょう。 全体としては、 ---ここから--- Y = "20040601" x = Date msgbox x g = Mid(x,1,4) & Mid(x,6,2) & Mid(x,9,2) If g < Y Then msgbox "w" Else msgbox "y" End If ---ここまで---