Microsoft Excel

Herbers Excel/VBA-Archiv

Datumsprüfung über VBA

    Betrifft: Datumsprüfung über VBA von: Chiara
    Geschrieben am: 28.08.2003 10:54:36

    Ciao!

    ich versuche gerade eine Indikatoranpassung an gültigkeitsdaten zu binden. in jeder spalte soll der gültige Indikator stehen. da manche Ind. nicht am 1. eines monats wechseln hab ich mit hilfe datepart M und Y herausgegriffen und verglichen. - es funktioniert leider nicht. weiß denn irgendwer wie ihr mir da weiter helfen könnt???


    Function Indikator(Datum, Gültig_bis1, Gültig_bis2, Gültig_bis3, Anpassung1)
        
    ' Datumsprüfung, welcher Indikator angewendet werden muss
        a = DatePart("m", Datum)
        b = DatePart("yyyy", Datum)
        c = DatePart("m", Anpassung1)
        d = DatePart("yyyy", Anpassung1)
        e = DatePart("m", Gültig_bis1)
        f = DatePart("yyyy", Gültig_bis1)
        g = DatePart("m", Gültig_bis2)
        h = DatePart("yyyy", Gültig_bis2)
        i = DatePart("m", Gültig_bis3)
        j = DatePart("yyyy", Gültig_bis3)
           
        
        If a < c And b < d Then Indikator = ""
        If c = a And d = b Then Indikator = "Indikator1"
        If d > b Then Indikator = "Indikator1"
        If e = a And f = b Then Indikator = "Indikator2"
        If f > b Then Indikator = "Indikator2"
        If g = a And h = b Then Indikator = "Indikator3"
        If h > b Then Indikator = "Indikator3"
        If i >= a And j >= b Then Indikator = ""
     
    End Function
    

      


    Betrifft: AW: Datumsprüfung über VBA von: Nayus
    Geschrieben am: 28.08.2003 11:04:29

    Hallo,
    leider weiß man nicht, was nicht funktioniert, weil Du es nicht sagst ;-)
    (Laufzeitfehler/unerwartetes Ergebnis...???)
    Mir fällt jedoch ein kleiner logischer Fehler auf.

    Erst
    If a < c And b < d Then Indikator = ""
    und dann
    If d > b Then Indikator = "Indikator1"
    führt dazu, dass der Funktionswert bei d > b immer "Indikator1" ist.

    Gruß,
    Nayus


      


    Betrifft: AW: Datumsprüfung über VBA von: chiara
    Geschrieben am: 28.08.2003 11:14:37

    danke für den hinweise. ich hab das geändert, aber trotzdem gibt er als ergebnis "" an. das ist auch der 'fehler'.

    lg
    chiara


      


    Betrifft: AW: Datumsprüfung über VBA von: Nayus
    Geschrieben am: 28.08.2003 11:39:38

    Hallo,
    Habe Deine Funktion mal in eine Mappe eingebaut und ausprobiert:

    B3=01.07.2003
    B4=01.07.2003
    B5=01.07.2003
    B6=01.07.2002
    B7=01.07.2002

    =indikator(B3;B4;B5;B6;B7)
    => liefert "Indikator3"

    Also in der Mappe funktioniert es.
    Übergibst Du die Variablen auch richtig?
    Ich würde generell bei der Funktionsdeklaration die Typen der Variablen und der Rückgabe angeben, weil Du so alles mögliche übergeben kannst, ohne, dass es zu einem Fehler kommt.

    Function Indikator(Datum as Date,...) as string
    ...
    
    End Function
    


    Viel Erfolg,
    Nayus


      


    Betrifft: AW: Datumsprüfung über VBA von: chiara
    Geschrieben am: 28.08.2003 11:14:51

    danke für den hinweise. ich hab das geändert, aber trotzdem gibt er als ergebnis "" an. das ist auch der 'fehler'.

    lg
    chiara