Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pflichtfeld in Userform

Pflichtfeld in Userform
20.06.2023 10:15:51
Biene

Hallo Zusammen, ich bin neu in VBA und habe ein Problem. Ich habe eine Userform mit Pflichtfeldern. Nun ist es so, das wenn das Feld nicht gefüllt ist, auch die Entsprechende Meldung nach klicken des "anlegen" Buttons anzeigt (klappt also) . Ich hätte sehr gerne, das er dann keinen Eintrag in die Tabelle vornimmt sondern die Userform sich wieder öffnet und man erst alle Felder entsprechend füllen muss (dachte eigentlich ich habe es so gemacht, das er in diese Zeile wieder Springt, anscheinend habe ich hier noch etwas vergessen? mit 'Cursour in Textbox setzen
Me.txtDatumEingabe.SetFocus ). Es soll nur ein Tabellen Eintrag gemacht werden, wenn auch die Userform komplett gefüllt wurde. Anbei mal mein Code, vielen lieben Dank für eure Hilfe und Tipps vorab !


Private Sub Workbook_Open()
EingabeMaske.Show

End Sub

'UserForm schließen
Private Sub Abbrechen_Click()
EingabeMaske.Hide
End Sub
Private Sub UserForm_Initialize()
EingabeMaske.txtDatumEingabe.Value = Date
End Sub
Private Sub Eingabemaske_Iniziali()
Private Sub Anlegen_Click()
'Blattschutz aufheben
Worksheets("Tabelle1").Unprotect "Sonnenblume"

'Eingabe in Liste einfügen
Dim loLetzte As Long
Dim cstrElement As Control

'erste freie Zeile im Blatt übernehmen
'loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
loLetzte = Cells(1048576, 1).End(xlUp).Row
'Tabellenzeile befüllen
Range("A" & loLetzte).Value = txtDatumEingabe.Value
Range("B" & loLetzte).Value = cbSchichtEingabe.Value
Range("C" & loLetzte).Value = cbSchweißanlage.Value
Range("D" & loLetzte).Value = cbTeilenr.Value
Range("E" & loLetzte).Value = txtStückzahlEingabe.Value
Range("F" & loLetzte).Value = txtNIOStückzahlEingabe.Value
Range("G" & loLetzte).Value = txtStückzahlNachgearbeitet.Value
Range("H" & loLetzte).Value = txtAusschuss.Value
Range("I" & loLetzte).Value = cbSchweißfehler.Value
Range("J" & loLetzte).Value = cbMaßnahmen.Value
Range("K" & loLetzte).Value = txtBemerkung.Value


EingabeMaske.Hide

'Prüfen, ob etwas in Textbox1 steht, Leerzeichen und nichtdruckbare Zeichen gelten nicht als Text!
If Len(Trim(Me.txtDatumEingabe.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie das Datum ein!"
'Cursour in Textbox setzen
Me.txtDatumEingabe.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.cbSchichtEingabe.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte wählen Sie eine Schicht aus!"
'Cursour in Textbox setzen
Me.cbSchichtEingabe.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.cbSchweißanlage.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte wählen Sie eine Schweißanlage aus!"
'Cursour in Textbox setzen
Me.cbSchweißanlage.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.cbTeilenr.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie die TeileNr. ein!"
'Cursour in Textbox setzen
Me.cbTeilenr.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.txtStückzahlEingabe.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie die Stückzahl ein!"
'Cursour in Textbox setzen
Me.txtStückzahlEingabe.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.txtNIOStückzahlEingabe.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie die N.i.O. Stückzahl ein!"
'Cursour in Textbox setzen
Me.txtNIOStückzahlEingabe.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.txtStückzahlNachgearbeitet.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie die nachgearbeitete Stückzahl ein!"
'Cursour in Textbox setzen
Me.txtStückzahlNachgearbeitet.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.txtAusschuss.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie den Ausschuss ein!"
'Cursour in Textbox setzen
Me.txtAusschuss.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.cbSchweißfehler.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte wählen Sie den Schweißfehler aus!"
'Cursour in Textbox setzen
Me.cbSchweißfehler.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.cbMaßnahmen.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie eine Maßnahem ein!"
'Cursour in Textbox setzen
Me.cbMaßnahmen.SetFocus
'Makro wird verlassen
End If

If Len(Trim(Me.txtBemerkung.Value)) = 0 Then
'Falls nicht, wird Meldung ausgegeben
MsgBox "Bitte geben Sie eine Bemerkung ein!"
'Cursour in Textbox setzen
Me.txtBemerkung.SetFocus
'Makro wird verlassen

End If

Worksheets("Tabelle1").Protect "Sonnenblume"

End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pflichtfeld in Userform
20.06.2023 10:24:05
onur
Es heisst übrigens "Cursor" und nicht "Cursour".


AW: Pflichtfeld in Userform
20.06.2023 16:44:05
Oberschlumpf
Hi,

besser, als nur den Code zu zeigen, wäre es, wenn du uns bitte per Upload deine Excel-Bsp-Datei mit Bsp-Daten, deinem Userform und dem Code zeigst.
Denn so wie jetzt, wenn wir nur den Code sehen, können wir ja nix testen - denn nur du weißt, wie deine Datei/Userform/Daten aussehen.

Ciao
Thorsten


AW: Pflichtfeld in Userform
20.06.2023 18:34:28
Marc Franz
Also ich sehe nirgends dass das Sub abgebrochen wird, wenn die Eingaben nicht korrekt sind

mit z.B.

Exit Sub

oder überseh ich was


Anzeige
AW: Pflichtfeld in Userform
20.06.2023 21:46:26
Pappawinni
Ja, da wo "'Makro wird verlassen" steht, sollte wohl Exit Sub stehen, aber da ist ja insgesamt völlig verdreht.
Erst werden die Werte geschrieben und dann wird das Form ausgeblendet und dann erfolgt die Prüfung.
Das kommt halt heraus, wenn man nicht versteht, was man sich so zusammen kopiert.
Nee, die Leute haben es heute schon schwer, mein erster Rechner war ein Commodore 64, der kannte nur n paar Befehle, die man ratz fatz im Kopf hatte und da war einfach nur lineare Programmierung angesagt. Jetzt werden die Leute gleich mit 1000den verschieden Klassen, Events, Methoden, Eigenschaften konfrontiert....
Dazu dann noch Konventionen, Enumerationen und weiß der Teufel....
Natürlich sieht das alles auch erst mal einfach aus, man klickt sich ein UserForm zusammen.... aber dann fehlt es halt hinten und vorne.


Anzeige
AW: Pflichtfeld in Userform
20.06.2023 22:29:58
onur
"mein erster Rechner war ein Commodore 64" . Welcher Luxus - 64 KB!
Meiner war ein Commodore PET mit „7167 Bytes free“.
Trotzdem konnte man mit solchen Rechnern schon Spiele wie "Elite" spielen. Wahrscheinlich verbraucht heutzutage schon die Darstellung des Mauszeigers mehr als 64 KB.


AW: Pflichtfeld in Userform
20.06.2023 22:49:16
Pappawinni
Ja, wenn man gesehen hat, was auf 64kb, möglich war....
(genau genommen war da ein noch Teil ROM der für den eigenen Code nicht genutzt werden konnte aber andererseits natürlich Routinen für Programmierung in Maschinensprache geliefert hat)
....fragt man sich schon manchmal, warum heute jeder Pups gleich ein paar Megabyte braucht.


Anzeige
AW: Pflichtfeld in Userform
20.06.2023 19:28:38
GerdL
Hallo Biene,

probier mal.
Private Sub Anlegen_Click()
    
    Dim loLetzte As Long
    Dim varElement As Variant
    
    
    For Each varElement In Array(Me.txtDatumEingabe, _
                            Me.cbSchichtEingabe, _
                            Me.cbSchweißanlage, _
                            Me.cbTeilenr, _
                            Me.txtStückzahlEingabe, _
                            Me.txtNIOStückzahlEingabe, _
                            Me.txtStückzahlNachgearbeitet, _
                            Me.txtAusschuss, _
                            Me.cbSchweißfehler, _
                            Me.cbMaßnahmen, _
                            Me.txtBemerkung)
    
    
            'Prüfen, ob etwas in den Boxen steht,
            'Leerzeichen und nichtdruckbare Zeichen gelten nicht als Text!
            If Len(Trim(varElement.Value)) = 0 Then
                'Falls nicht, wird Meldung ausgegeben
                MsgBox "Bitte geben Sie etwas ein!"
                'Cursor in Control setzen
                varElement.SetFocus
                'Makro wird verlassen
                Exit Sub
            End If
    
    Next
    
    
    With Worksheets("Tabelle1")
    
        'Blattschutz aufheben
        .Unprotect "Sonnenblume"
        
        
        'Eingabe in Liste einfügen
        
        
        'erste freie Zeile im Blatt übernehmen
        'loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        loLetzte = .Cells(1048576, 1).End(xlUp).Row
        'Tabellenzeile befüllen
        .Range("A" & loLetzte).Value = txtDatumEingabe.Value
        .Range("B" & loLetzte).Value = cbSchichtEingabe.Value
        .Range("C" & loLetzte).Value = cbSchweißanlage.Value
        .Range("D" & loLetzte).Value = cbTeilenr.Value
        .Range("E" & loLetzte).Value = txtStückzahlEingabe.Value
        .Range("F" & loLetzte).Value = txtNIOStückzahlEingabe.Value
        .Range("G" & loLetzte).Value = txtStückzahlNachgearbeitet.Value
        .Range("H" & loLetzte).Value = txtAusschuss.Value
        .Range("I" & loLetzte).Value = cbSchweißfehler.Value
        .Range("J" & loLetzte).Value = cbMaßnahmen.Value
        .Range("K" & loLetzte).Value = txtBemerkung.Value
        
        .Protect "Sonnenblume"
    
    End With

    Me.Hide


End Sub
Gruß Gerd


Anzeige
AW: Pflichtfeld in Userform
20.06.2023 21:26:48
Pappawinni
Hallo Gerd,
bist du sicher, dass das
 loLetzte = .Cells(1048576, 1).End(xlUp).Row
so passt, also klar, ist die letzte benutzte Zelle, passt zum Variablennamen, aber da will man ja nichts rein schreiben, oder ?


AW: Pflichtfeld in Userform
21.06.2023 10:02:13
GerdL
Da musst du Biene fragen, Winni.
Gruß Gerd


AW: Pflichtfeld in Userform
22.06.2023 08:21:58
Illig
Das konnte ich mir anpassen, darin lag nicht mein eigentliches Problem. danke dennoch für den Hinweis und die hilfe!!!


AW: Pflichtfeld in Userform
22.06.2023 08:21:07
Illig
Herzlichen dank für die Hilfe, mit ihrem Skript habe ich es hinbekommen und konnte so meine Fehler alle finden und dazu natürlich auch noch was lernen. herzlichen Dank !

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige