0

VBAを使用してExcelのマクロにDateDiff関数を使用しようとしています。

私の理解では、コードは整数値を返すはずです。

この場所でオンラインで提供されている例を次に示します: http://www.techonthenet.com/access/functions/date/datediff.php

-DateDiff ("yyyy", #15/10/1998#, #22/11/2003#) は 5 を返します

-DateDiff ("m", #15/10/2003#, #22/11/2003#) は 1 を返します

-DateDiff ("d", #15/10/2003#, #22/11/2003#) は 38 を返します

私が使用したコードは次のとおりです。

Sub macrotest()

Dim dateNow, dateThen, dateFinal As Date

dateNow = Format(Sheet1.Cells(2, 2), "DD/MM/YY")
dateThen = Format(Sheet1.Cells(3, 2), "DD/MM/YY")
dateFinal = DateDiff("d", dateNow, dateThen)

Sheet1.Cells(5, 2) = dateFinal


End Sub

最後に、これは私がExcelの行に持っていたものです:

B2: 5/30/12

B3: 3/30/12

B5: 12:00:00 AM (このセルには結果がリストされているはずでした)。

- Excel のデフォルトの日付、または 12:00 のいずれかを取得しました。

何か案は?ありがとう!

4

1 に答える 1

3

ヘルプ システムによると、DateDiff はLongを返します。

コードは 2 つの Variant と 1 つの Date 型を宣言しています。それ以外の

Dim dateNow, dateThen, dateFinal As Date

あなたはおそらく意味した

Dim dateNow As Date, dateThen As Date, dateFinal As Long

このコードは私のために働いた。特定の状況に適用するには、少し調整する必要がある場合があります (テストを高速化するために ActiveSheet を使用しました)。

Sub macrotest()

Dim dateNow As Date, dateThen As Date, dateFinal As Long

dateNow = ActiveSheet.Cells(2, 2).value
dateThen = ActiveSheet.Cells(3, 2).value
dateFinal = DateDiff("d", dateThen, dateNow)

ActiveSheet.Cells(5, 2) = dateFinal

End Sub

また、関数呼び出しで逆になっているdateNowと思います。dateThenDateDiff

于 2012-05-30T20:04:05.270 に答える