3fache Datumsprüfung

Von: , Frage gestellt am So, 1. Apr 2007

Hallo,

ich prüfe mit folgenden Code, ob in der Zelle D9 ein Datum eingetragen wurde und gebe eine Meldung, wenn es fehlt:

If Range("D9").Value = "" Then
MsgBox "Datum fehlt!!!"
Range("D9").Select
Exit Sub
End If

Zwei Sachen fehlen mir noch: Prüfung, ob Zelle D9 ein Datumsformat hat und ob in einer zweiten Tabellen "USt" (Zellen c10:c15) das Jahr des datums angelegt wurde. Dazu habe ich folgendes entwickelt:

If WorksheetFunction.CountIf(Worksheets("USt").Range("C10:C15").Row), Year(zelle)) > 0 Then

kann es aber nicht korrekt in den obigen Code integrieren. Für alle drei geprüften Dinge, also Datum vorhanden, Datum richtiges Format, Jahrt des Dtums in Tab "USt" angelegt, soll über die entsprechende msgbox ausgegeben werden, wenn Bedingung nicht erfüllt ist. In diesem Fall soll jedesmal das Makro über exit sub verlassen werden. Kann jemand hier weiterhelfen?

Gruß
Denis

4 Antworten zu dieser Frage

  1. Antwort von nach 3 Stunden 0 hilfreich
    Re: 3fache Datumsprüfung

    Hallo Denis. kann es aber nicht korrekt in den obigen Code integrieren.
    Wenn ich Dich mit dem Integrieren richtig verstanden habe, dann hast Du zwei Möglichkeiten, den Code zu gestalten.

    1. Verschachtelung der If-Then-Abfragen:

    Dim Fehler As Boolean
    Dim Satz As String
    If Range("D9").Value = "" then
    Fehler = True
    Satz = "Datum fehlt"
    If DatumsFormat = Falsch then
    Satz = Satz & ", falsches Format"
    If JahrInTabelleUSt = Falsch then
    Satz = Satz & ", Jahr nicht eingetragen"
    End If
    End If
    End If
    If Fehler = True Then
    MsgBox Satz
    Exit Sub
    End If

    2. Verknüpfung der Bedingungen mit einem Operator:
    If Range("D9").Value = "" Or DatumsFormat = Falsch Or JahrInTabelleUSt = Falsch then
    MsgBox "Datum fehlt"
    Exit Sub
    End If
    Ich hoffe, das hilft Dir weiter.

    Viele Grüße
    Carsten

    • Antwort von nach 19 Stunden 0 hilfreich
      Re^2: 3fache Datumsprüfung

      Hallo Carsten,

      die verschachtelte if-Abfrage könnte meine Aufgabe lösen. Ich habe deinen Code ergänzt, allerdings haut nicht alles hin wie es soll. Die msgbox erscheint nur, wenn die Zelle d9 komplett leer ist. Es wird dann ausgegeben, dass alle drei Bedingungen nicht erfüllt sind, obwohl das Datumsformat der Zelle stimmt. Meine Countif-Abfrage (Prüfung ob Jahr des Datums angelegt wurde) funktioniert auch nicht. Kann keinen Fehler entdecken. Den Code findest du unten. Kannst du die Fehlerursachen sehen.

      Gruß
      Denis

      Sub datum()
      Dim Fehler As Boolean
      Dim Satz As String
      If Range("d9").Value = "" Then
      Fehler = True
      Satz = "Datum fehlt"
      If IsDate("d9") = Falsch Then
      Satz = Satz & ", falsches Format"
      If WorksheetFunction.CountIf(Worksheets("USt").Range("c10:c15"), Year(Sheets("USt").Range("d9"))) = 0 Then
      Satz = Satz & ", Jahr nicht eingetragen"
      End If
      End If
      End If
      If Fehler = True Then
      MsgBox Satz
      Exit Sub
      End If

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: 3fache Datumsprüfung

        Hallo Denis.

        Den folgenden Code habe ich ausprobiert und er funktioniert bei mir.
        Trotzdem kann es sein, daß Dir die Reihenfolge der Abarbeitung nicht gefällt. Dann müßtest Du das noch ändern. Aber hier erstmal der Code:

        Sub datum()
        Dim Fehler1 As Boolean
        Dim Fehler2 As Boolean
        Dim Fehler3 As Boolean
        Dim Satz As String
        If Sheets("USt").Range("D9").Value <> "" Then
        If IsDate(Sheets("Ust").Range("D9")) = True Then
        If Application.WorksheetFunction.CountIf(Sheets("USt").Range("C10:C15"), Year(Sheets("USt").Range("D9"))) = 0 Then
        Fehler3 = True
        Satz = "Das Jahr ist nicht enthalten"
        End If
        Else
        Fehler2 = True
        Satz = "D9 enthält kein Datum"
        End If
        Else
        Fehler1 = True
        Satz = "D9 enthält keinen Eintrag"
        End If
        If Fehler1 = True Or Fehler2 = True Or Fehler3 = True Then
        MsgBox Satz
        Exit Sub
        End If
        'Dein weiterer Code, falls kein Fehler vorhanden ist
        End Sub
        Viele Grüße
        Carsten

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: 3fache Datumsprüfung

          Hallo Carsten,

          danke, der Code funktioniert bei mir auch. Die Reihenfolge ist mir zunächst egal, solange der Code korrekt funktioniert. Sind aber deutlich mehr Verschachtelungen geworden als ich gedacht habe. War mir aber klar, dass man es nicht mit 5 Zeilen Code hinkriegt.

          Gruß
          Denis

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!