Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wenn Zelle leer, Tagesdatum einsetzen
#1
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
Antwortento top
#2
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
Gruß
Michael
[-] Folgende(r) 1 Benutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • Excelbeginner
Antwortento top
#3
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
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste