Welcher Boolean Wert kommt raus

zer0core

Ensign
Registriert
Sep. 2007
Beiträge
174
Hallo Leute,

Welcher Boolean Wert kommt raus, wenn in der Funktion die erste If Abfrage Falsch herauskommt?
Wenn die Funktion aufgerufen wird, wird diese doch komplett abgearbeitet oder nicht?

Code:
Public Function pruefung() As Boolean 
    pruefung = True 
    
    Me.com_abteilung.SetFocus 
    If (Me.com_abteilung.Text = "") Then 
        pruefung = False 
        Me.com_abteilung.BackColor = RGB(255, 0, 0) 
    Else 
        Me.com_abteilung.BackColor = RGB(255, 255, 255) 
    End If 
    
    Me.txt_anzahl.SetFocus 
    If (Me.txt_anzahl.Text = "") Then 
        pruefung = False 
        Me.txt_anzahl.BackColor = RGB(255, 0, 0) 
    Else 
        Me.txt_anzahl.BackColor = RGB(255, 255, 255) 
    End If 
    
    Me.txt_druckername.SetFocus 
    If (Me.txt_druckername.Text = "") Then 
        pruefung = False 
        Me.txt_druckername.BackColor = RGB(255, 0, 0) 
    Else 
        Me.txt_druckername.BackColor = RGB(255, 255, 255) 
    End If 
    
    Me.txt_grund.SetFocus 
    If (Me.txt_grund.Text = "") Then 
        pruefung = False 
        Me.txt_grund.BackColor = RGB(255, 0, 0) 
    Else 
        Me.txt_grund.BackColor = RGB(255, 255, 255) 
    End If 
    
    Me.txt_name.SetFocus 
    If (Me.txt_name.Text = "") Then 
        pruefung = False 
        Me.txt_name.BackColor = RGB(255, 0, 0) 
    Else 
        Me.txt_name.BackColor = RGB(255, 255, 255) 
    End If 
    
    Me.com_typ.SetFocus 
    If (Me.com_typ.Text = "") Then 
        pruefung = False 
        Me.com_typ.BackColor = RGB(255, 0, 0) 
    Else 
        Me.com_typ.BackColor = RGB(255, 255, 255) 
    End If 
    
End Function

LG
 
Wenn eine der Prüfungen wahr ist (also der Text = "" ist), wird immer false rauskommen, egal, was die folgenden Prüfungen ergeben.

P.S.: Evlt. abweichende Ergebnisse aufgrund von Syntaxfehlern mal außen vor. Ist nicht meine Sprache (was es auch immer für eine ist) :D
 
Funktioniert irgendetwas nicht? oder wieso fragst du das?
der Logik nach kommt immer False raus sobald ein Feld ein False produziert und alle müßten abgerabeitet werden
 
Die Kollegen sind korrekt, es kommt natürlich false heraus, wird ja false gesetzt und die Funktion wird bis zum Ende durchgearbeitet, aber der Rückgabewert wird ja nie auf True zurückgesetzt.

@Reglohln:
Du glücklicher, dass du die Sprache nicht erkennst, ist VBA... leider schon viel zu oft damit rumgemurkst.
 
Zu erst einmal ist die Funktion Fehlerhaft, da kein return in der Funktion aufgerufen wird. :evillol:

Und ähm sorry, aber wenn die erste If-Abfrage falsche ist, hat Me.com_abteilung.Text einen Wert und er würde in den else Zweig gehen, wo der Wert von pruefung nicht geändert wird.
Somit ist der Wert am Ende der Funktion abhängig von den anderen If-Abfragen. Ohne die Werte der anderen Varaiblen zu kennen kann man keine Aussage darüber treffen welcher Wert pruefung am Ende hat.
 
@Fonce: In VBA muss kein "return" aufgerufen werden - die Funktion ist in diesem Sinne also nicht fehlerhaft ;)
 
keine ahnung was du machen willst, aber wenn das programm beim ersten false abbrechen soll, nimm "exit" und beende das programm einfach. was du da hast wird false, sobald eine if bedingung scheitert (also false ist).
 
Zurück
Oben