Hallo liebe Mitstreiter,
ich hab für meine Firma ein Makro geschrieben, welches aus einer Seriennummer ein Datum erzeugt (das Datum ist codiert in der SN enthalten) und dann eine Differenz zu einem anderen Datum in der gleichen Zeile bildet und damit quasi eine Produktlebensdauer erzeugt. Als Subroutine mit Schaltfläche als Trigger funktioniert das auch 1a (siehe Screenshot).
http://abload.de/img/vba8usw3.png
Jetzt würde ich die Umwandlung/Berechnung gerne wie eine Art Formel behandeln, sodass er mir das Ergebnis der Berechnung jeweils am Ende Zeile ausgibt, in dem die Seriennummer steht. Hatte das Ganze in eine Function umgewandelt, aber er gibt mir als Ergebnis immer nur "#WERT" heraus. Kann mir jemand helfen?
Hier der Code:
Function Lifetime()
Dim c As String
Dim m As String
Dim y As String
Dim d1 As String
Dim d2 As String
Dim d1cd As Date
Dim d2cd As Date
Dim d3 As Integer
c = ActiveCell.Value
If Len(c) = 9 Then
y = Mid(c, 2, 2)
c = Left(c, 1)
m = Asc(c) - 64
d1 = "20" + y & "/" & m & "/01"
d1d = CDate(d1)
d2 = ActiveCell.Offset(, 5).Value
d2d = CDate(d2)
d3 = DateDiff("m", d1d, d2d)
MsgBox ("Die Lifetime der Pumpe beträgt " & d3 & " Monate")
ElseIf Len(c) = 12 Then
y = Mid(c, 3, 2)
m = Left(c, 2)
d1 = "20" + y & "/" & m & "/01"
d1d = CDate(d1)
d2 = ActiveCell.Offset(, 5).Value
d2d = CDate(d2)
d3 = DateDiff("m", d1d, d2d)
MsgBox ("Die Lifetime der Pumpe beträgt " & d3 & " Monate")
Else
MsgBox ("Ungültige Seriennummer")
End If
End Function
|