Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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

unload me in Userform

unload me in Userform
16.09.2018 16:45:09
Uwe
Hallo zusammen,
ich habe in meiner Tabelle verschiedene Aufgaben die mit Userforms erledigt werden. Man kann nach Aufruf eines Userforms die Aufgabe mittels Eingabe der Daten auf den Ausführungsbutton durchführen, hier wird die Arbeit gleichzeitig gespeichert. Es gibt in jedem Formular auch einen Cancel-button um die Aufgabe ungespeichert abzbrechen. Es wird nur das Formular geschlossen.
Funktioniert auch alles tadellos. Nur bei Cancel habe ich folgendes Problem:
Diverse Textfelder im UF sind Pflichtfelder. Erfolgt hier keine Eingabe wird mittels MSG-Box daran erinnert. Rufe ich nun ein UF auf und möchte es ohne oder mit unvollständigen Eingaben wieder schliessen wird der hinter dem Close-Button hinterlegte unload me - Befehl erst ausgeführt nachdem ich alle MsgBoxen die dann aufgehen weggeklickt habe und dann nochmal auf Cabcel gehe.
Das finde ich ein wenig unsauber, finde aber keine Lösung.
Vielen Dank vorab für Eure Anregungen
Viele Grüße
Uwe

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: unload me in Userform
16.09.2018 16:49:21
Hajo_Zi
Hallo Uwe,
Frage jemand der neben Dir sitzt, der sieht die Datei.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: unload me in Userform
16.09.2018 17:06:06
Uwe
Dachte das wäre unabhängig vom (Rest)Code erklärbar. Hier mal der Code des UF:
Private Sub Add_Product_Click()
Application.ScreenUpdating = False
Sheets("Helpdesk").Visible = True
Sheets("Helpdesk").Select                                                      'Blattschutz  _
aufheben
ActiveSheet.Unprotect Password:="papaya"
Dim freie_Zeile As Integer                                                        'Variable  _
deklarieren
'erste freie Zeile in Blatt "Helpdesk" ermitteln und in Variable "freie_Zeile" schreiben
freie_Zeile = Sheets("Helpdesk").Range("F65536").End(xlUp).Offset(1, 0).Row
Sheets("Helpdesk").Cells(freie_Zeile, 6) = HK_Number.Text                       'schreibt den  _
Customer Name in die Tabelle
Sheets("Helpdesk").Cells(freie_Zeile, 7) = HK_Description.Text                       'schreibt  _
den Customer Name in die Tabelle
Unload Me                                                                               ' _
schliesst das Userform und aktiviert den Blattschutz
Sheets("Helpdesk").Select
ActiveSheet.Protect Password:="papaya", DrawingObjects:=True, Contents:=True, Scenarios:= _
True, AllowFiltering:=True
Sheets("B&O Issue Log").Select
ActiveWorkbook.Save                                                                     ' _
speichert die Tabelle
Sheets("Helpdesk").Visible = False
Application.ScreenUpdating = True
End Sub

Private Sub Close_Product_Click()
Unload Me
End Sub
Private Sub HK_Description_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(HK_Description) 

Private Sub HK_Number_Exit(ByVal Cancel As MSForms.ReturnBoolean)                                _
'Wenn Materialnummer leer, dann Artikelbezeichnung auch leer
If Me.HK_Number.Text = "" Then GoTo Weiter
Dim D_HK
Dim f As Range
D_HK = HK_Number.Text                                                               'definiert  _
das RMA-Textfeld als Prüfwert
Set f = Sheets("Helpdesk").Columns(6).Find(What:=D_HK, LookAt:=xlWhole) 'SVerweis des Prü _
fwertes auf die Tabelle
If Not f Is Nothing Then
MsgBox "This Item Number already exist."                                       'Bei  _
vorhandenen Suchergebnis erfolgt eine Fehlermeldung
Me.HK_Number = ""
HK_Number.BackColor = RGB(255, 0, 0)
HK_Number.SetFocus
Else:
If Not IsNumeric(HK_Number) Or Len(HK_Number)  7 Then HK_Number.BackColor = RGB(255, 0, 0) _
Else HK_Number.BackColor = RGB(255, 255, 255)
If HK_Number.Text = "" Then
MsgBox "It´s not a valid Item Number!"
HK_Number.SetFocus
End If
End If
Weiter:
If HK_Number.Text = "" Then
HK_Number.BackColor = RGB(255, 0, 0)
MsgBox "Item Number cannot be empty!"
Else: HK_Number.BackColor = RGB(255, 255, 255)
End If
End Sub

Anzeige
AW: unload me in Userform
16.09.2018 17:17:31
Nepumuk
Hallo,
das liegt am Exit-Event der TextBox.
Ich mache das anders. Ich lass den User eingeben was er will ohne eine just in Time Prüfung. Erst wenn der Benutzer auf "speichern" klickt prüfe ich die Eingaben und zeige entsprechende Hinweistexte an.
Gruß
Nepumuk
AW: unload me in Userform
16.09.2018 18:22:01
Uwe
Hallo Nepumuk,
das wollte ich ursprünglich auch so haben. Was muss ich dafür im Event einstellen?
Danke & Gruß
Uwe
AW: unload me in Userform
16.09.2018 18:34:37
Nepumuk
Hallo Uwe,
für die TextBoxen brauchst du gar kein Event. Nur ein Click-Event für den Speichern-Button.
Gruß
Nepumuk
AW: unload me in Userform
16.09.2018 18:37:19
Matthias
Moin!
Hast du da noch was eingestellt. Habe den Code mal in meine Testform eingebettet. Wenn ich auf den closebutton klicke ist alles weg. Da springt bei mir keine MsgBox an.
VG
Anzeige
AW: unload me in Userform
16.09.2018 19:16:14
Uwe
Hallo zusammen,
@ Nepumuk; Das Klick-Event ist ja eigentlich eingestellt:
Private Sub Add_Product_Click()
oder ist da eine Einstellung in den Eigenschaften?
@ Matthias; Ausser dem geposteten Code ist kein weiterer hinterlegt.
Viele Grüße
Uwe
AW: unload me in Userform
16.09.2018 19:29:25
Nepumuk
Hallo Uwe,
was willst du denn noch in den Eigenschaften? Kopiere die Codes aus den Exit-Events in das Add_Product_Click-Event, passe sie entsprechend an und gut ist.
Gruß
Nepumuk
AW: unload me in Userform
16.09.2018 19:53:52
Uwe
Hallo Nepumuk,
danke für den Tipp,
habe ich getestet und baue gleich noch alle anderen Userforms entsprechend um.
VG
Uwe
Anzeige
AW: unload me in Userform
16.09.2018 20:48:58
Uwe
Nochmal Hallo,
bevor ich die komplexeren UF´s umbaue stellt sich doch noch ein Problem. Beim Cancel-Button wird das UF fenster nun wie gewünscht direkt geschlossen. Aber wenn ich eine Fehlerhafte eingabe mache und auf den "Add" Button gehe werden mir auch wie gewünscht die MSG-Boxen angezeigt. Bestätige ich diese wird das UF geschlossen. In diesem UF kein Problem an sich. Ich habe aber Userforms in die mehrere Testfelder ausgefüllt werden. Macht man nun einen Fehler wird das Userform geschlossen und man muss von vorne anfangen. Das ist ärgerlich. Der Benutzer soll die Möglichkeit haben das fehlerhafte Textfeld zu korrigieren ohne alles neu eingeben zu müssen. Hier mal der (abgeänderte) Code:
Private Sub Add_Product_Click()
Application.ScreenUpdating = False
Sheets("Helpdesk").Visible = True
Sheets("Helpdesk").Select                                                      'Blattschutz  _
aufheben
ActiveSheet.Unprotect Password:="papaya"
'

Private Sub HK_Number_Exit(ByVal Cancel As MSForms.ReturnBoolean)                                _
'Wenn Materialnummer leer, dann Artikelbezeichnung auch leer
'If Me.HK_Number.Text = "" Then GoTo Weiter
Dim D_HK
Dim f As Range
D_HK = HK_Number.Text                                                               'definiert  _
das RMA-Textfeld als Prüfwert
Set f = Sheets("Helpdesk").Columns(6).Find(What:=D_HK, LookAt:=xlWhole) 'SVerweis des Prü _
fwertes auf die Tabelle
If Not f Is Nothing Then
MsgBox "This Item Number already exist."                                       'Bei  _
vorhandenen Suchergebnis erfolgt eine Fehlermeldung
Me.HK_Number = ""
HK_Number.BackColor = RGB(255, 0, 0)
HK_Number.SetFocus
Else:
If Not IsNumeric(HK_Number) Or Len(HK_Number)  7 Then HK_Number.BackColor = RGB(255, 0, 0) _
Else HK_Number.BackColor = RGB(255, 255, 255)
If HK_Number.Text = "" Then
MsgBox "It´s not a valid Item Number!"
HK_Number.SetFocus
End If
End If
'Weiter:
'If HK_Number.Text = "" Then
'HK_Number.BackColor = RGB(255, 0, 0)
'MsgBox "Item Number cannot be empty!"
'Else: HK_Number.BackColor = RGB(255, 255, 255)
'End If
'End Sub
'

Private Sub HK_Description_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(HK_Description) 
Dim freie_Zeile As Integer 'Variable deklarieren
'erste freie Zeile in Blatt "Helpdesk" ermitteln und in Variable "freie_Zeile" schreiben
freie_Zeile = Sheets("Helpdesk").Range("F65536").End(xlUp).Offset(1, 0).Row
Sheets("Helpdesk").Cells(freie_Zeile, 6) = HK_Number.Text 'schreibt den Customer Name in die Tabelle
Sheets("Helpdesk").Cells(freie_Zeile, 7) = HK_Description.Text 'schreibt den Customer Name in die Tabelle
Unload Me 'schliesst das Userform und aktiviert den Blattschutz
Sheets("Helpdesk").Select
ActiveSheet.Protect Password:="papaya", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
Sheets("B&O Issue Log").Select
ActiveWorkbook.Save 'speichert die Tabelle
Sheets("Helpdesk").Visible = False
Application.ScreenUpdating = True
End Sub

Private Sub Close_Product_Click()
Unload Me
End Sub
Danke & Gruß
Uwe
Anzeige
AW: unload me in Userform
17.09.2018 10:58:43
Werner
Hallo Uwe,
mach mal vor der jeweiligen Msgbox-Ausgabe ein Cancel = True rein.
Gruß Werner
AW: unload me in Userform
20.09.2018 21:17:13
Uwe
Hallo Werner,
sorry für die späte Rückmeldung und danke für die Antwort.
An welcher Stelle muss das Cancel = True rein? Habe verschiedene Variationen ausprobiert. Entweder schließt sich das UF beim Bestätigen trotzdem oder ich bekomme einen Fehler.
Dim D_HK
Dim f As Range
D_HK = HK_Number.Text
Set f = Sheets("Helpdesk").Columns(6).Find(What:=D_HK, LookAt:=xlWhole)
If Not f Is Nothing Then
MsgBox "This Item Number already exist."
Me.HK_Number = ""
HK_Number.BackColor = RGB(255, 0, 0)
HK_Number.SetFocus
Else:
If Not IsNumeric(HK_Number) Or Len(HK_Number) 7 Then HK_Number.BackColor = RGB(255, 0, 0) Else HK_Number.BackColor = RGB(255, 255, 255)
If HK_Number.Text = "" Then
MsgBox Cancel = True
'"It´s not a valid Item Number!"
Cancel = True
HK_Number.SetFocus
End If
End If
Danke & Gruß
Uwe
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige