Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
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
Textbox Exit mit Button verlassen
10.02.2009 13:00:00
WolfgangN
Hallo,
ich habe eine Userform mit einer Textbox, wo ein Datum eingefügt wird. Wenn kein Datum, dann verbleibe in Textbox. Das klappt auch alles sehr gut. Ich suche jetzt aber eine Möglichkeit, wenn kein Datum eingegeben wurde und Button Abbrechen (Unload Userform1) wurde gedrückt, soll Exit verlassen werden und dann Unload Userform1. Das Einfügen von If CommandButton6 =True... bewirkt nichts.
Der User muß erst ein Datum eingeben und kann erst dann Abbrechen drücken.
Wie kann ich mit einem Button die UserForm sofort schließen, wenn ein falsches Datum eingegeben wurde?
Vielen Dank für Euer Interesse und Hilfe.
Gruß
Wolfgang

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Prüfen, ob Datum in Textbox3
If IsDate(TextBox3) = False Then
MsgBox "Bitte korrektes Datum eingeben"
TextBox3 = ""
'Leider geht es so nicht
If CommandButton6 = True Then Exit Sub
Cancel = True 'Cursor weiterhin in Textbox1 belassen
End If
TextBox3 = Format(TextBox3, "dd.mm.yy")
End Sub



Private Sub CommandButton6_Click()
Unload UserForm1
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: Textbox Exit mit Button verlassen
10.02.2009 13:07:00
D.Saster
Hallo,
das Problem ist, dass bei Klick auf Abbrechen erst das Exit-Ereignis der TB eintritt und dann das Klick-Ereignis des Buttons.
Vielleicht solltest du die TB erst bei Klick auf OK prüfen.
Gruß
Dierk
AW: Textbox Exit mit Button verlassen
10.02.2009 13:20:00
WolfgangN
Hallo Dierk,
Danke für Deine Antwort.
Ich habe leider mehrere Textboxen, deshalb will ich sofort beim Verlassen der jeweiligen Textbox eine Prüfung durchführen und diese dann eventuell abbrechen.
Wenn es nicht geht so muß ich es eben so lassen.
Aber eventuell hat noch jemand eine Idee, lasse deshalb Frage offen.
Gruß
Wolfgang
AW: Textbox Exit mit Button verlassen
10.02.2009 13:24:35
ede
Hallo Wolfgang,
mach einen Button für Abrrechen, in welchem Du nichts tusts und einen Button "ok", wo Du die einzelnen TB auf richtigen Inhalt prüftst. !
Somit ersparst Du Dir das TB-Exit ereignis ganz.
Gruss
Anzeige
Danke
10.02.2009 14:56:00
WolfgangN
Hallo ede,
ich belasse es jetzt so wie es ist. Noch einen weiteren Button will ich eigentlich nicht einfügen.
Trotzdem vielen Dank und Gruß
Wolfgang
AW: Textbox Exit mit Button verlassen
10.02.2009 13:23:00
hary
Hallo Wolfgang
versuch mal dies, also eine zweite Box wenn keine Eingabe. Ungetestet!!!

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim iClick As Integer
'Prüfen, ob Datum in Textbox3
If IsDate(TextBox3) = False Then
MsgBox "Bitte korrektes Datum eingeben"
end if
if TextBox3 = "" then
iClick = MsgBox( prompt:="Was wollen Sie tun",  Buttons:=vbOKCancel)
If iClick = vbOK Then
Deine Anweisung
Else
Deine Anweisung
End If
End if
TextBox3 = Format(TextBox3, "dd.mm.yy")
End Sub


Gruss Hary

Anzeige
Danke und Nachfrage
10.02.2009 14:52:00
WolfgangN
Hallo hary,
habe Deine Variante getestet, wenn ich bei Deiner MsgBox auf Abbrechen drücke und meine Anweisung ausführen lasse.
Else
Unload UserForm1
Exit Sub
End If
wird zwar die UserForm geschlossen, aber Exit Sub wird erst nach einem weiteren Durchlauf ausgeführt,
es erscheinen also die MsgBoxen ohne UserForm und erst dann wird Exit Sub ausgeführt.
Warum das so ist kann ich mir nicht erklären, hast Du eine Erklärung?
Auf jeden Fall ist es nicht das, was ich wollte.
Ich werde es so belassen, wie es ist. Der User muß
also erst ein Datum eingeben und kann auf Abbrechen drücken.
Trotzdem vielen Dank und Gruß
Wolfgang
Anzeige
AW: Nachfrage
11.02.2009 10:01:00
hary
Hallo Wolfgang
Es muesste doch auch nur eine Box reichen oder. Pruefung: wenn leer oder Falsch. Dann brauchst Du auch kein exit.Versuch's mal.

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim iClick As Integer
'Prüfen, ob Datum in Textbox3
if TextBox3 = "" or IsDate(TextBox3) = False then
iClick = MsgBox( prompt:="Was wollen Sie tun",  Buttons:=vbOKCancel)
If iClick = vbOK Then
Deine Anweisung
Else
Deine Anweisung
End If
End if
TextBox3 = Format(TextBox3, "dd.mm.yy")
End Sub


Gruss Hary

AW: Nachfrage
11.02.2009 11:37:00
WolfgangN
Hallo Hary,
vielen Dank für Deine Hilfe, aber leider komme ich nicht klar. Ich habe mal ein kleines Bsp. nachgebaut.
Das mit der MsgBox ist schon klar, aber er führt meine Anweisung nicht aus. Wäre schön, wenn Du nochmals Hilfe leisten kannst und mir schreibst was ich eingeben muß, damit meine Anweisung ausgeführt wird.
Was ich genau will steht im Code Textbox1 Exit.
Vielen Dank und Gruß
Wolfgang
https://www.herber.de/bbs/user/59344.xls
Anzeige
AW: Nachfrage
11.02.2009 12:42:00
ede
Hallo,
versuchs mal für dein abgestelletes Beispiel so:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim iClick As Integer
'Prüfen, ob Datum in Textbox3
If Not IsDate(TextBox1) Then
TextBox1 = "kein datum bitte erneut eingeben"
End If
TextBox1 = Format(TextBox1, "dd.mm.yy")
[A1] = TextBox1
With TextBox1
.SelStart = 0
.SelLength = Len(TextBox1)
End With
End Sub


Gruss

AW: Nachfrage
11.02.2009 12:56:00
WolfgangN
Hallo ede,
vielen Dank für Deinen Code, leider hilft er auch nicht weiter. Ich möchte, wenn ein falsches Datum eingegeben wurde, dass der User entscheiden kann: Neueingabe oder Abbruch (Schließen der Userform).
Kannst Du nochmal helfen?
Gruß
Wolfgang
Anzeige
AW: Nachfrage
11.02.2009 15:28:00
Original
Hi,
Option Explicit
Dim canExit As Boolean

Private Sub CommandButton1_Click()
Unload Me
End Sub



Private Sub TextBox1_Change()
canExit = Len(TextBox1) = 0
End Sub



Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim iClick As Integer
'Prüfen, ob Datum in Textbox3
If Not canExit Then
If TextBox1 = "" Or IsDate(TextBox1) = False Then
iClick = MsgBox(prompt:="Was wollen Sie tun", Buttons:=vbOKCancel)
If iClick = vbOK Then
'Hier soll Textbox leer werden und Cursor in Textbox bleiben
TextBox1 = ""
Cancel = True
Else
'Hier soll die Userform geschlossen werden, geht so nicht
TextBox1 = ""
Unload UserForm1
End If
End If
TextBox1 = Format(TextBox1, "dd.mm.yy")
[A1] = TextBox1
End If
End Sub



Private Sub UserForm_Initialize()
canExit = True
End Sub


mfg Kurt

Anzeige
Danke
11.02.2009 16:21:00
WolfgangN
Hallo Kurt,
vielen Dank, es klappt super, genau wie ich es wollte.
Ich wollte schon aufgeben und dachte muß der User eben aufpassen.
Es ist perfekt.
Nochmals Danke und einen schönen Tag.
Gruß
Wolfgang

179 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige