|
>Me.TextBox4.Value = Application.Evaluate("DATEDIF(""" _
> & CDate(.Value) & """,TODAY(),""Y"")")
>End With →ここまでで、歳のTextBox4に年齢の値が計算されていました。
>End Sub
う〜ん。
いまいち、CDate(.Value)の意味が解らないんですけど???
なぜ、日付に戻す必要があるのでしょうか?
このセルは、文字列だからわざわざ日付の直しているのでしょうか?
どんな風に入力されているのかわからないけど、
CDate(.Value)
だとまずいと思いますよ。
たとえば、
Sub だめ1()
Range("A1").NumberFormatLocal = "G/標準"
Range("A1") = "2006/2/9"
MsgBox Application.Evaluate("DATEDIF(""" _
& Range("A1").Value & """,TODAY(),""Y"")")
End Sub
Sub だめ2()
Range("A2").NumberFormatLocal = "@"
Range("A2") = "2006/2/9"
MsgBox Application.Evaluate("DATEDIF(""" _
& CDate(Range("A2").Value) & """,TODAY(),""Y"")")
End Sub
Sub OK1()
Range("A1").NumberFormatLocal = "G/標準"
Range("A1") = "2006/2/9"
MsgBox Application.Evaluate("DATEDIF(""" _
& Format(Range("A1").Value, "yyyy/m/d") & """,TODAY(),""Y"")")
End Sub
Sub OK2()
Range("A2").NumberFormatLocal = "@"
Range("A2") = "2006/2/9"
MsgBox Application.Evaluate("DATEDIF(""" _
& Range("A2").Value & """,TODAY(),""Y"")")
End Sub
それとね。
Date型の変数は、コントロールパネルの地域オプションの
短い方の設定に応じて結果が変わるから注意した方が良いです。
場合によってアメ交方式で扱われるからこれも注意。
西暦は、きちんと4桁で。
下記で望みの結果が返ります?
Dim ddn As Date
ddn = Date
MsgBox ddn
|
|