AW: lässt sich dies machen? ---> geht bestimmt ... owT
13.09.2018 23:35:19
fcs
Hallo Peter,
wandle die Subs, die die Textboxen prüfen in Functions um, die True zurückgeben, wenn der Inhalt der Textboxen in Ordnung ist und False, wenn er nicht korrekt ist.
Bei False wird dann die per Commandbutton1 gestartete Prüfroutine im jeweiligen Prüfschritt verlassen.
Gruß
Franz
Option Explicit
Private Sub CommandButton1_Click()
'1. Prüfung Datum
If CheckDatum(TextBox1) = False Then Exit Sub
'2. Prüfung Tgb.-Nr.
If CheckTgbNr(TextBox2) = False Then Exit Sub
'3. Prüfung Vorgang1
If CheckVorgang1(TextBox3) = False Then Exit Sub
'4. Prüfung Vorgang2
If CheckVorgang2(TextBox4) = False Then Exit Sub
'5. Prüfung Einnahmen
If CheckEinnahmen(TextBox5) = False Then Exit Sub
'6. Prüfung Ausgaben
If CheckAusgaben(TextBox6) = False Then Exit Sub
'7. Prüfung Hauptkonten
If CheckHauptkonten(TextBox8) = False Then Exit Sub
'8. Prüfung Unterkonten
If CheckUnterkonten(TextBox11) = False Then Exit Sub
End Sub
'und die nachstehenden Codes prüfen die Textboxen:
Option Explicit
Function CheckDatum(objTB As Object) As Boolean
CheckDatum = True
If Not IsDate(objTB) Then _
MsgBox "Kein Datum in " & objTB.Name
CheckDatum = False
End If
End Function
Function CheckTgbNr(objTB As Object) As Boolean
CheckTgbNr = True
If (objTB) = "" And UserForm3_TB_prüfen.Label17 = "" Then
' MsgBox "keine Wert erforderlich"
ElseIf UserForm3_TB_prüfen.TextBox2 = "" And UserForm3_TB_prüfen.Label17 > "" Then
MsgBox "Bitte Tbg.-Nr. eintragen" ', vbInformation + vbOKOnly, _
"Erfassung wird gesendet"
CheckTgbNr = False
objTB.SetFocus
End If
End Function
Function CheckVorgang1(objTB As Object) As Boolean
CheckVorgang1 = True
If (objTB) > "" And UserForm3_TB_prüfen.Label18 = "" Then
' MsgBox "kein Wert erforderlich"
ElseIf UserForm3_TB_prüfen.TextBox3 = "" Then
MsgBox "Bitte Vorgang1 eintragen" ', vbInformation + vbOKOnly, _
"Erfassung wird gesendet"
CheckVorgang1 = False
objTB.SetFocus
End If
End Function
Function CheckVorgang2(objTB As Object) As Boolean
CheckVorgang2 = True
If (objTB) = "" And UserForm3_TB_prüfen.Label19 = "" Then
' MsgBox "kein Wert erforderlich"
'CheckVorgang2 = False
ElseIf UserForm3_TB_prüfen.TextBox4 = "" And UserForm3_TB_prüfen.Label19 > "" Then
MsgBox "Bitte Vorgang2 eintragen" ', vbInformation + vbOKOnly, _
"Erfassung wird gesendet"
CheckVorgang2 = False
objTB.SetFocus
End If
End Function
Function CheckEinnahmen(objTB As Object) As Boolean
CheckEinnahmen = True
If (objTB) > "" And UserForm3_TB_prüfen.TextBox6 = "" Then
' MsgBox "kein Wert erforderlich"
'CheckEinnahmen = False
ElseIf UserForm3_TB_prüfen.TextBox5 = "" And UserForm3_TB_prüfen.TextBox6 = "" Then
MsgBox "Bitte Einnahmen eintragen" ', vbInformation + vbOKOnly, _
"Erfassung wird gesendet"
CheckEinnahmen = False
objTB.SetFocus
End If
End Function
Function CheckAusgaben(objTB As Object) As Boolean
CheckAusgaben = True
If (objTB) > "" And UserForm3_TB_prüfen.TextBox5 = "" Then
' MsgBox "kein Wert erforderlich"
'CheckAusgaben = False
ElseIf UserForm3_TB_prüfen.TextBox6 = "" And UserForm3_TB_prüfen.TextBox5 = "" Then
MsgBox "Bitte Ausgaben eintragen" ', vbInformation + vbOKOnly, _
"Erfassung wird gesendet"
CheckAusgaben = False
objTB.SetFocus
End If
End Function
Function CheckHauptkonten(objTB As Object) As Boolean
Dim wert As String
Dim eWert As Object
CheckHauptkonten = True
wert = UserForm3_TB_prüfen.TextBox11
'MsgBox Application.CountIf([G2:G20], "*1*")
'MsgBox Application.CountIf([G2:G20], wert)
wert = Application.CountIf([G2:G20], wert)
If (objTB) > "" And UserForm3_TB_prüfen.TextBox10 = "" _
And UserForm3_TB_prüfen.TextBox11 > "" Then
' MsgBox "kein Wert erforderlich"
MsgBox "Hauptkonto gewählt, Unterkonto vorhanden - bitte Unterkonto eintragen!"
CheckHauptkonten = False
UserForm3_TB_prüfen.ComboBox2.SetFocus
ElseIf UserForm3_TB_prüfen.TextBox8 = "" And UserForm3_TB_prüfen.TextBox10 = "" Then
CheckHauptkonten = False
MsgBox "Bitte Hauptkonto eintragen" ', vbInformation + vbOKOnly, _
"Erfassung wird gesendet"
' objTB.SetFocus 'nicht möglich da gesperrt
End If
End Function
Function CheckUnterkonten(objTB As Object) As Boolean
Dim wert As String
Dim eWert As String
CheckUnterkonten = True
If (objTB) > "" And UserForm3_TB_prüfen.TextBox10 > "" Then
' MsgBox "kein Wert erforderlich"
MsgBox "beide Werte vorhanden - CmdButton öffnen und SetFocus"
UserForm3_TB_prüfen.CommandButton3.Enabled = True
UserForm3_TB_prüfen.CommandButton3.SetFocus
UserForm3_TB_prüfen.CommandButton3.BackColor = &HC0FFC0
'ElseIf UserForm3_TB_prüfen.TextBox8 = "" And UserForm3_TB_prüfen.TextBox10 = "" _
And UserForm3_TB_prüfen.TextBox11 = "" Then
ElseIf UserForm3_TB_prüfen.TextBox9 > "" And UserForm3_TB_prüfen.TextBox10 = "" _
And UserForm3_TB_prüfen.TextBox11 = "" Then
MsgBox "prüfen ob ein Unterkonto für das Hauptkonto existiert"
wert = UserForm3_TB_prüfen.TextBox9
eWert = Application.CountIf([G2:G20], wert)
If UserForm3_TB_prüfen.TextBox11 = "" And eWert = 1 Then
MsgBox "vorhanden - bitte Unterkonto auswählen"
CheckUnterkonten = False
UserForm3_TB_prüfen.ComboBox2.SetFocus
ElseIf UserForm3_TB_prüfen.TextBox11 = "" And eWert = 0 Then
MsgBox "nicht vorhanden - CmdButton öffnen und SetFocus"
UserForm3_TB_prüfen.CommandButton3.Enabled = True
UserForm3_TB_prüfen.CommandButton3.SetFocus
UserForm3_TB_prüfen.CommandButton3.BackColor = &HC0FFC0
End If
End If
End Function