2017-02-20 7 views
2

Ich habe eine Excel-Datei, die automatisch Einträge Zeitstempel, wie sie hinzugefügt werden. Ich möchte ein Skript, das den Zeitunterschied in Minuten zwischen dem ersten und letzten Eintrag findet. Das ist, was ich bisher herausgefunden habe.VBA: DateDiff funktioniert nicht

Sub Duration() 

Dim lRow As Long Dim lValue Dim fValue Dim Duration As Long, n As Integer 

'Find the last non-blank cell in column A(1) 
lRow = Cells(Rows.Count, 1).End(xlUp).Row 
lValue = Cells(lRow, 5).Value 
MsgBox (lValue) 
fValue = Cells(5, 5).Value 
MsgBox (fValue) 
Duration = DateDiff("n", "fValue", "lValue") 
MsgBox (Duration) 

Cells(3, 5) = Duration 

End Sub 
+8

Versuchen Sie wie folgt: 'Duration = DateDiff (" n ", fValue, lValue)' – Vityata

+2

@ Vityata ist richtig, Sie verwenden String-Literale, wo es die Variablennamen sein sollte. Es wird versucht, einen Unterschied der Daten von 2 nicht übereinstimmenden Zeichenketten zu finden. Angenommen, die Zellen haben Daten, sollte dies danach funktionieren. –

+2

Danke. Das hat es behoben! Ich weiß, dass es ein Amateurfehler ist, noch neu im Programmieren. Ich schätze die Hilfe. –

Antwort

5

DateDiff dauert 3 Argumente:

DATEDIFF (datepart , startdate , enddate) 

Alle Argumente können als Variablen als auch gegeben werden. In Ihrem Fall versuchen, mit:

Duration = DateDiff("n", fValue, lValue) 

Wenn Sie es schaffen mit weniger Linien, Sie auch für gehen kann:

Duration = DateDiff("n", Cells(5, 5).Value, Cells(lRow, 5).Value) 

Einzelheiten finden Sie https://msdn.microsoft.com/en-us/library/ms189794.aspx.

+1

Danke! Das funktioniert großartig. –

+0

Willkommen, @LeeSin - es ist kein Fehler amature, es gibt eine Reihe von Fehlern, die jeder mindestens einmal machen sollte, um besser zu werden :) – Vityata

+0

Ich versuche zu abonnieren, was Groucho sagte: "Lernen von den Fehlern anderer. Du kannst nie lange genug leben, um sie alle selbst zu machen. " –