2017-06-04 4 views
1

私は今より4日古い日付を取得しようとしています。 「私はDateAdd関数VBAは日付から日数を差し引くことはできません

nDateTime = Format(Now, "YYMMDD") 
oDateTime = nDateTime - 4 

せずにそれを実行しようとしました170604で、OLDDATEは02-10-3734”

で出力が*されて今日ここに私のコード

Sub calcdate() 
Dim nDateTime, oDateTime As Date 
nDateTime = Format(Now, "YYMMDD") 
oDateTime = Format(DateAdd("d", -4, nDateTime), "YYMMDD") 
MsgBox ("Today is " & nDateTime & " And OldDate is " & oDateTime) 
End Sub 

しかし、出力が今日されています私はこれらの変化に

nDateTime = Format(Now, "YYMMDD") 
oDateTime = DateAdd("d", -4, nDateTime) 
を試してみました170604であるとOLDDATEは170604'

です

*出力は '今日は170604であるとOLDDATEは31-01-2367である'

nDateTime = Format(Now, "YY-MM-DD") 
oDateTime = Format(DateAdd("d", -4, nDateTime), "YY-MM-DD") 

*出力は、 '今日は17-06-04で、OLDDATEは2013年4月6日である' です

だから私は "d"を入れても年を引いているようです。

最後の事は、私が試した:

nDateTime = Format(Now, "DD-MM-YY") 
oDateTime = Format(DateAdd("d", -4, nDateTime), "DD-MM-YY") 

*出力は「今日は04-06-17であるとOLDDATEは31-05-2017である」形式170531で、私はこの日付をしたい 、またなぜそれをやりましたYY形式のみを選択している間に私に2017を教えてください。

答えて

1

フォーマットでは文字列が作成されるため、文字列が作成されます。その後の書式設定:

Dim nDateTime As Date, oDateTime As Date 
nDateTime = Now 
oDateTime = nDateTime - 4 
MsgBox "Today is " & Format(nDateTime, "YYMMDD") & " And OldDate is " & Format(oDateTime, "YYMMDD") 

また、各変数の変数タイプを宣言する必要があります。フォーマット(現在、 "YYMMDD")ので

+0

ある - 4 のMsgBox( "OLDDATEがある" とフォーマット(oDateTime、 "YYMMDD")) ' これは最適な方法ではないかもしれないが、これは元のコードではないことがわかっているので、これを使って別のことを行うので十分です。 宣言について、私はそれらを一緒に宣言することができると思う私のコードで、私はmsdnでそれをチェックし、とにかく動作します [https://msdn.microsoft.com/en-us/library/office/gg264241.aspx] –

+0

@ i.fathy- VBAでは、すべての変数宣言に型が必要です(Variantにしない場合)。変数のリストの最後に「何かとして」を置くことはできません –

+0

ありがとう、私の悪い、それを持っています。 –

0

結果が今日 oDateTime =として感謝@Absinthe `薄暗いoDateTime、これは働いていた文字列

Dim myDate As Date 
Dim nDatetime As String, oDateTime As String 

myDate = Now 
nDatetime = Format(myDate, "yymmdd") 
oDateTime = Format(DateAdd("d", -4, myDate), "YY-MM-DD") 
+0

ありがとう、それは動作します。 –

関連する問題