Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
560to564
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
560to564
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UserForm Eintrag bringt doppelte Meldung

UserForm Eintrag bringt doppelte Meldung
05.02.2005 12:08:50
Gabi
Hallo Excelgemeinde,
Zunächst erst einmal vielen Dank an die fleißigen Helfer hier im Forum.
Nach vielen Stunden suchen und lesen im Forum habe ich jetzt mein erstes UserForm fertig. Mit einer Einschränkung.
Ich hoffe, Ihr könnt mir helfen und evtl. auch noch ein paar Verbesserungsvorschläge einbringen. Vielen Dank schon einmal.
Also mein Problem. Das Userform hat 13 Textfelder.
Fülle ich die Felder 8 und 9 nicht aus und gehe auch mit dem Tab oder der Mouse nicht dort rein, kommt die Meldung "Ort und PLZ müssen ausgefüllt sein".
Ist alles *richtig* ausgefüllt, werden die Werte der Textfelder in das Tabellenblatt in die nächste freie Zeile übernommen.
Das Userform wird geleert, für den nächsten Eintrag.
Leider kommt dann auch sofort die Meldung "PLZ und Ort müssen ausgefüllt sein". Diese Meldung muss bestätigt werden.
Weshalb kommt diese Meldung? Wie oder wo muss ich folgenden Code anordnen, daß die Meldung sofort nach erfolgten "Eintrag" und leeren der Felder *nicht* mehr erscheint?
Komisccher Weise erscheint nur die Meldung "Ort" nicht die ueber die "Postleitzahl"
' ----- Die 2 Textboxen (8 und 9) muessen Werte enthalten Anfang -----
' auch wenn sie unten auf die "richtigen" Werte geprueft werden soll an dieser Stelle
' sichergestellt werden, das bei Klick auf "Eintragen" auch Werte in den Boxen stehen
If TextBox8.Value = "" Or TextBox9.Value = "" Then
MsgBox "Bitte PLZ und Ort ausfuellen!"
Exit Sub
'dieses Teil verlassen, ohne Userform zu schliessen.
' ----- Textboxen muessen Werte enthalten Ende -----
Gleich noch eine Frage. Wie kann ich prüfen lassen, ob eine gültige E-Mail Adresse in Feld13 eingegeben wurde?
Hier nun mein UserForm.
Sicherlich sind noch viele andere Verbesserungen möglich?
Mit freundliche Grüßen
Gabi

Private Sub CommandButton1_Click()
' ----- Der "Eintragebuttom" Anfang -----
' ----- Die 2 Textboxen (8 und 9) muessen Werte enthalten Anfang -----
' auch wenn sie unten auf die "richtigen" Werte geprueft werden soll an dieser Stelle
' sichergestellt werden, das bei Klick auf "Eintragen" auch Werte in den Boxen stehen
If TextBox8.Value = "" Or TextBox9.Value = "" Then
MsgBox "Bitte PLZ und Ort ausfuellen!"
Exit Sub
'dieses Teil verlassen, ohne Userform zu schliessen.
' ----- Textboxen muessen Werte enthalten Ende -----
End If
'UserForm1.Hide
'------ Ueernahme der Werte aus den Textboxen in die Exceltabelle -----
z = Range("A1").End(xlDown).Row + 1
If z > 65000 Then z = 2
Cells(z, 1) = TextBox1
Cells(z, 2) = TextBox2
Cells(z, 3) = TextBox3
Cells(z, 4) = TextBox4
Cells(z, 5) = TextBox5
Cells(z, 6) = TextBox6
Cells(z, 7) = TextBox7
Cells(z, 8) = TextBox8
Cells(z, 9) = TextBox9
Cells(z, 10) = TextBox10
Cells(z, 11) = TextBox11
Cells(z, 12) = TextBox12
Cells(z, 13) = TextBox13
' ----- Textbox1 bis Textbox 13 leeren nach dem Uebertragen -----
' nun sollen alle Textfelder geleert werden
' Es erfolgt beim "Eintragen" jedoch noch eine laetige Meldung, das Ort und Postleitzahl keine Werte enthalten :( :( :(
Dim Tb As Integer
On Error Resume Next
For Tb = 1 To 13
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub

' ----- Der "Eintragebuttom" Ende -----

Private Sub Label7_Click()
End Sub


Private Sub TextBox1_Change()
End Sub


Private Sub TextBox13_Change()
Dim I As Integer
Dim At As Integer
Dim Punkt As Integer
For I = 1 To Len(Cells(1, 1))
'MsgBox Mid(Cells(1, 1), I, 1)
If Mid(Cells(1, 1), I, 1) = "@" Then
At = At + 1
Punkt = 0
End If
If Mid(Cells(1, 1), I, 1) = "." Then Punkt = Punkt + 1
Next I
If At <> 1 Then MsgBox "Fehler"
If Punkt < 1 Then MsgBox "Fehler"
End Sub

' es muss eine "richtige" PLZ eingetragen werden, in Textfeld 8 bevor das Feld verlassen wird

Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
Wert = TextBox8.Value
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
MsgBox "Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox8.Value)
Cancel = True
Else
TextBox8.Value = Format(Int(Wert), "00000")
End If
End Sub

' Im Textfeld "Ort" (Textfeld 9) muss etwas stehen, vor Verlassen des Feldes

Private Sub TextBox9_Change()
If UserForm1.TextBox9.Value = "" Then
MsgBox "Bitte einen Eintrag machen! Der Ort muss angegeben sein!", vbOKOnly, "Pflichteingaben"
Exit Sub
End If
End Sub

AW: UserForm Eintrag bringt doppelte Meldung
Jens_Pu
Hallo Gabi,
ohne alles nachvollzogen zu haben,
das Change-Ereignis tritt auch ein, wenn Du alle Felder leerst!
Deswegen kommt die Meldung, weil die ja in der Change-Procedure steht.
Gruß Jens
AW: UserForm Eintrag bringt doppelte Meldung
Gabi
Hallo Jens,
danke für die schnelle Antwort.
Das ist mir nun klar, das Ereignis "alle Felder leeren" existiert ja nun einmal. Nach dem Eintrag in das Tabellenblatt, möchte ich ja nicht jedes Textfeld per Hand leeren um einen neuen Datensatz anlegen zu können. Zumal ja nicht immer alle oder die gleichen Textfelder ausgefüllt werden.
Wie bringe ich es nun unter einen Hut?:
- Es sollen 2 Felder Inhalte haben. Erst dann dürfen die Werte eingefügt werden.
- Nach dem Einfügen der Inhalte soll im UserForm alle Textfelder geleert werden.
- das UserForm soll nicht geschlossen werden
Ich bin schon recht am Zweifeln, ob das überhaupt machbar ist.
Mit freundlichen Grüßen
Gabi
Anzeige
AW: UserForm Eintrag bringt doppelte Meldung
Jens_Pu
Hallo Gabi,
schon mal an eine Variable gedacht, die Du entsprechend setzt und abprüfst?
Gruß Jens
AW: UserForm Eintrag bringt doppelte Meldung
05.02.2005 13:39:45
Josef
Hallo Gabi!
Mit Prüfvariable zB. so!


      
Option Explicit
Dim putData As Boolean
Private Sub CommandButton1_Click()
Dim z As Long
Dim Tb As Integer
putData = 
False   'Prüfvariable auf Falsch setzen

' ----- Der "Eintragebuttom" Anfang -----

' ----- Die 2 Textboxen (8 und 9) muessen Werte enthalten Anfang -----
' auch wenn sie unten auf die "richtigen" Werte geprueft werden soll an dieser Stelle
' sichergestellt werden, das bei Klick auf "Eintragen" auch Werte in den Boxen stehen
If TextBox8.Value = "" Or TextBox9.Value = "" Then
    MsgBox 
"Bitte PLZ und Ort ausfuellen!"
    
Exit Sub
'dieses Teil verlassen, ohne Userform zu schliessen.
' ----- Textboxen muessen Werte enthalten Ende -----
End If
'UserForm1.Hide

'------ Ueernahme der Werte aus den Textboxen in die Exceltabelle -----

putData = 
True    'Prüfvariable auf Wahr setzen weil Eintrag
                  'vorgenommen wird!

z = Range(
"A1").End(xlDown).Row + 1
If z > 65000 Then z = 2
For Tb = 1 To 13
    Cells(z, Tb) = Controls(
"TextBox" & Tb)
Next
' ----- Textbox1 bis Textbox 13 leeren nach dem Uebertragen -----
' nun sollen alle Textfelder geleert werden
' Es erfolgt beim "Eintragen" jedoch noch eine laetige Meldung, das Ort und Postleitzahl keine Werte enthalten :( :( :(

On Error Resume Next
For Tb = 1 To 13
    Me.Controls(
"TextBox" & Tb) = ""
Next Tb
putData = 
False      'Prüfvariable nach dem Löschen auf Falsch setzen
End Sub
' ----- Der "Eintragebuttom" Ende -----

Private Sub TextBox13_Change()
Dim I As Integer
Dim At As Integer
Dim Punkt As Integer
    
If putData Then Exit Sub   'Wenn Prüfvariable auf Wahr, dann Sub verlassen

    
For I = 1 To Len(Cells(1, 1))
    
'MsgBox Mid(Cells(1, 1), I, 1)
      If Mid(Cells(1, 1), I, 1) = "@" Then
        At = At + 1
        Punkt = 0
      
End If
      
If Mid(Cells(1, 1), I, 1) = "." Then Punkt = Punkt + 1
    
Next I
    
If At <> 1 Then MsgBox "Fehler"
    
If Punkt < 1 Then MsgBox "Fehler"
End Sub
' es muss eine "richtige" PLZ eingetragen werden, in Textfeld 8 bevor das Feld verlassen wird

Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
If putData Then Exit Sub      'Wenn Prüfvariable auf Wahr, dann Sub verlassen

Wert = TextBox8.Value
    
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
        MsgBox 
"Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
        TextBox8.SetFocus
        TextBox8.SelStart = 0
        TextBox8.SelLength = Len(TextBox8.Value)
        Cancel = 
True
    
Else
        TextBox8.Value = Format(Int(Wert), 
"00000")
    
End If
End Sub
' Im Textfeld "Ort" (Textfeld 9) muss etwas stehen, vor Verlassen des Feldes

Private Sub TextBox9_Change()
If putData Then Exit Sub      'Wenn Prüfvariable auf Wahr, dann Sub verlassen

If UserForm1.TextBox9.Value = "" Then
MsgBox 
"Bitte einen Eintrag machen! Der Ort muss angegeben sein!", vbOKOnly, "Pflichteingaben"
Exit Sub
End If
End Sub 


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: UserForm Eintrag bringt doppelte Meldung
Gabi
Hallo Sepp,
DANKE!!
3x in die Luft gesprungen - in die Hände klatsch!
Es scheint anstandslos zu funktionieren.
Liebe Grüße
Gabi
Sepp ist der Beste!
Kurt
o
AW: UserForm Eintrag bringt doppelte Meldung
Gabi
Hallo Sepp,
die Variablen für TextBox13 liefern bei der Eingabe eines *jeden* Zeichens und beim "Betreten" der TextBox die zu bestätigende Meldung "Fehler" :(
' ----- Die Mailadresse eintragen Beginn -----

Private Sub TextBox13_Change()
Dim I As Integer
Dim At As Integer
Dim Punkt As Integer
If putData Then Exit Sub   'Wenn Prüfvariable auf Wahr, dann Sub verlassen
For I = 1 To Len(Cells(1, 1))
'MsgBox Mid(Cells(1, 1), I, 1)
If Mid(Cells(1, 1), I, 1) = "@" Then
At = At + 1
Punkt = 0
End If
If Mid(Cells(1, 1), I, 1) = "." Then Punkt = Punkt + 1
Next I
If At <> 1 Then MsgBox "Fehler"
If Punkt < 1 Then MsgBox "Fehler"
End Sub

' ----- Die Mailadresse eintragen Ende -----
Liebe Grüße
Gabi
Anzeige
AW: UserForm Eintrag bringt doppelte Meldung
06.02.2005 09:54:56
Josef
Hallo Gabi!
Deien Code hab' ich natürlich nicht überprüft!
Ich würde das "Exit" Ereignis nutzen, um die Mailadresse zu überprüfen.

Private Sub TextBox13_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If putData Then Exit Sub   'Wenn Prüfvariable auf Wahr, dann Sub verlassen
If TextBox13 Like "*@*.*" And Len(TextBox13) - Len(Replace(TextBox13, "@", "")) = 1 Then
Else
MsgBox "Fehler"
Cancel = True
TextBox13.SelStart = 0
TextBox13.SelLength = Len(TextBox13)
End If
End Sub

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: UserForm Eintrag bringt doppelte Meldung
Gabi
Hallo Sepp,
Du bist ein Schatz! DANKE!
Das funktioniert prima!
Liebe Grüße
Gabi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige