プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : 指定なし)
満年齢を求める記述 VBS
投稿日時: 17/01/20 07:16:00
投稿者: hisayanxp

入力した日付から満年齢を求める記述を以下のようにしてみました。
日付以外のデータが入力されたときに「日付を入力してください」を表示させようとしてもうまくいきません。実行すると「13行目、7文字目に endがありません」と表示されます。
よろしくお願いします。
 
Option Explicit
Dim strDate,dtmDate
strDate=InputBox("生年月日を/で区切り西暦で入力")
If IsDate(strDate)=True Then
dtmDate=CDate(strDate)
If dtmDate < Now Then
MsgBox CStr(DateDiff("yyyy",strDate,Now)-1)
Else
MsgBox CStr(Datediff("yyyy",strDate,Now))
End If
If IsDate(strDate)=False Then
MsgBox "日付を入力してください。"
End If
 
 
 

回答
投稿日時: 17/01/20 08:58:20
投稿者: ピー

hisayanxp さんの引用:

If IsDate(strDate)=False Then

 
 ↑
Else では。。。

回答
投稿日時: 17/01/20 10:42:03
投稿者: sk

引用:
Dim strDate,dtmDate
strDate=InputBox("生年月日を/で区切り西暦で入力")
If IsDate(strDate)=True Then
    dtmDate=CDate(strDate)
    If dtmDate < Now Then
        MsgBox CStr(DateDiff("yyyy",strDate,Now)-1)
    Else
        MsgBox CStr(Datediff("yyyy",strDate,Now))
    End If
If IsDate(strDate)=False Then
    MsgBox "日付を入力してください。"
End If

Dim strDate, dtmDate, dtmNow, lngAge
strDate = InputBox("生年月日を/で区切り西暦で入力")
 
If IsDate(strDate) = True Then
    dtmDate = CDate(strDate)
    dtmNow = Date
    lngAge = DateDiff("yyyy", strDate, dtmNow)
    If (Month(dtmDate) > Month(dtmNow)) Or _
       (Month(dtmDate) = Month(dtmNow) And Day(dtmDate) > Day(dtmNow)) Then
        lngAge = lngAge - 1
    End If
    MsgBox lngAge
Else
    MsgBox "日付を入力してください。"
End If
--------------------------------------------------------------
 
・1 レベル目の If 文における
 Else 節の記述が正しくない。
 
・2 レベル目の If 文の条件が
 「現在の年の誕生日に達していないかどうか」
 という記述になっていない。

投稿日時: 17/01/23 16:42:40
投稿者: hisayanxp

skさん、ピーさんありがとうございます。
よく理解できました。