Clever-Excel-Forum

Normale Version: Wenn Zelle leer, Tagesdatum einsetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe eine vermutlich simple Frage, komme aber nicht drauf.

Ich habe eine Funktion definiert mit verschiedenen Parametern, die aus einer Excel-Tabelle ausgelesen werden. Die Funktion soll mir sagen, wieviel Tage z.B. vom 15.3. - 10.4. im Monat März liegen.

Wenn jetzt eine Zelle (hier Zeitraumende), in der normalerweise ein Datum stehen soll, leer ist, möchte ich, dass als Wert das heutige Tagesdatum eingesetzt wird.

Kann mir jemand helfen?




Code:
Public Function ZEITTEIL(Teilanfang As Single, Teilende As Single, Zeitraumanfang As Single, Zeitraumende As Single) As Single


       [b] If Zeitraumende = "" Then Zeitraumende = Date[/b]
           
        If ((Teilanfang <= Zeitraumanfang) And (Teilende <= Zeitraumanfang)) Or ((Teilanfang >= Zeitraumende) And (Teilende >= Zeitraumende)) Then
        ZEITTEIL = 0
       
        If ((Teilanfang > Teilende) Or (Zeitraumanfang > Zeitraumende)) Then msgbox "Fehler: Anfang ist größer als Ende!"
  Else
 
    Dim speicher(4) As Single
    Dim i As Byte
    Dim merker As Byte
    merker = 0
   
    speicher(0) = DateDiff("d", Teilanfang, Teilende)
    speicher(1) = DateDiff("d", Teilanfang, Zeitraumende)
    speicher(2) = DateDiff("d", Zeitraumanfang, Teilende)
    speicher(3) = DateDiff("d", Zeitraumanfang, Zeitraumende)
   
    For i = 1 To 3
        If speicher(merker) > speicher(i) Then
         merker = i
        End If
    Next i
    ZEITTEIL = speicher(merker)
  End If

Vielen Dank schon einmal im Voraus!


Excelbeginner
Hallo,

Du hast die Parameter nicht als Datum deklariert, sondern als Single. Das ist zwar kein Problem könnte aber zu Unklarheiten führen.

Zeitraumende kann nicht "" sein, da es kein String ist, sondern eine Zahl. Wenn Du eine leere Zelle als Parameter für diese Variable übergibst, dürfte die Variable den Wert 0 haben, Du müsstest also auf 0 prüfen:
Code:
If Zeitraumende = 0 Then Zeitraumende = Date
Hallo Michael,

allerbersten Dank! Es ist so einfach, wenn man's weiß.

Bzgl, der richtigen Dimensionierung müsste ich wahrscheinlich statt


Code:
Public Function ZEITTEIL(Teilanfang As Single, Teilende As Single, Zeitraumanfang As Single, Zeitraumende As Single) As Single

Folgendes nehmen:

Code:
Public Function ZEITTEIL(Teilanfang As Date, Teilende As Date, Zeitraumanfang As Date, Zeitraumende As Date) As Single
 Beste Grüße

Excelbeginner