Anzeige
Archiv - Navigation
1740to1744
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
Problem Cancel = True
13.02.2020 10:42:15
Peter
Hallo,
ich habe eine UF mit mehreren TB und ComboBoxes.
Für die TB1 habe ich folgenden Code:
Private Sub TextBox1_Change()
If TextBox1 = "" = True Then Exit Sub
'Anfang Datum . Vorgabe und Begrenzung auf 10 Stellen
If TextBox1.Tag = "1" = True Then Exit Sub
If Len(TextBox1) = 2 Then
If InStr(TextBox1, ".") = 0 Then TextBox1 = TextBox1 & "."
ElseIf Len(TextBox1) = 5 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) 
Gibt es eine Möglichkeit, das so zu gestalten, dass kein Cancel = True benötigt wird.
Denn durch Cancel = True wird alles blockiert, bis TB1 ausgefüllt ist.
Gruss
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Problem Cancel = True
13.02.2020 11:08:14
onur
"Gibt es eine Möglichkeit, das so zu gestalten, dass kein Cancel = True benötigt wird" - Sag DU es mir - DU hast das doch so einprogrammiert (warum auch immer).
AW: Problem Cancel = True
13.02.2020 11:15:10
Peter
Hallo Onur,
Deine Antwort verstehe ich nicht.
Wenn ich Cancel = True weglasse, dann wird beim Verlassen die Textbox1 nicht markiert.
Es geht darum, dass wenn in der TB1 nichts steht, dass dann die TB1 markiert wir aber mittels "Cancel = True" nicht blockiert wird.
Wie würdest Du das denn machen?
Gruss
Peter
AW: Problem Cancel = True
13.02.2020 11:22:45
onur
Was verstehst DU denn unter "die TB1 markiert wir aber mittels "Cancel = True" nicht blockiert "?
Anzeige
AW: Problem Cancel = True
13.02.2020 11:31:59
Peter
Hallo Onur,
wenn ich in die Textbox1 ein korrektes Datum eingebe, erhält die Textbox2 den Fokus.
Wenn ich jedoch das Datum in der TextBox1 nachträglich ändere und einen Fehler mache, dass kein korrektes Datum enthalten ist, erhält bei Cancel = True die Textbox1 den Focus und die anderen Button oder Textboxes können nicht bedient werden, solange kein korrektes Datum in Textbox1 enthalten ist.
Wenn ich zum Beispiel das erste Feld "ComboBox3 auswähle, anschliessend die Textbox1 und hier das Datum nur z.B. "01." eingebe und dann die Textbox1 verlasse, wird der Focus auf Textbox1 gesetzt und erwartet die Eingabe von Datum. Wenn ich jedoch jetzt einen Programm-Abbruch machen möchte Button "Beenden" ist der Button "Beenden" nicht möglich auszuführen.
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruss
Peter
Anzeige
AW: Problem Cancel = True
13.02.2020 11:46:23
onur
DAS reicht doch:
Private Sub TextBox1_Change()
If TextBox1.Tag = "1" = True Then Exit Sub '?
If Len(TextBox1) = 2 Then
If InStr(TextBox1, ".") = 0 Then TextBox1 = TextBox1 & "."
ElseIf Len(TextBox1) = 5 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", ""))  7 Then
If IsDate(TextBox1) Then
TextBox1 = CDate(TextBox1.Text)
TextBox2.SetFocus
Exit Sub
End If
End If
End Sub

AW: Problem Cancel = True
13.02.2020 12:21:06
Peter
Hallo Onur,
funktioniert leider nicht.
Gruss
Peter
AW: Problem Cancel = True
13.02.2020 12:22:11
onur
Was genau denn nicht?
AW: Problem Cancel = True
13.02.2020 12:26:08
Peter
Hallo Onur,
ich gebe ein Datum "01.01.2020" ein. Dann wird der Fokus auf das Textfeld "TextBox2" gesetzt. Soweit richtig.
Wenn ich jetzt aber zum Beispiel von diesem Datum 2020 lösche und mit TAB weiter gehe, erhält die Textbox2 den Fokus statt die TextBox1.
Gruss
Peter
Anzeige
AW: Problem Cancel = True
13.02.2020 12:30:32
onur
Entweder blockieren oder weitergehen - BEIDES geht nicht.
AW: Problem Cancel = True
13.02.2020 13:02:33
Peter
Hallo Onur,
besten Dank für Deine Hilfe.
Ich werde die Lösung von Rudi anwenden.
Gruss
Peter
AW: Problem Cancel = True
13.02.2020 12:49:33
Rudi
Hallo,
vielleicht so?
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox1) Then
If IsDate(TextBox1) Then
blnCODE = True
TextBox1 = Format(CDate(TextBox1), "DD.MM.YYYY")
Else
If MsgBox("Das ist kein korrektes Datum!!!" _
& vbLf & "Trotzdem fortfahren?", _
vbYesNo + vbCritical, "FRAGE") = vbNo Then
Cancel = True
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End If
End If
End Sub

Gruß
Rudi
Anzeige
AW: Problem Cancel = True gelöst
13.02.2020 13:03:28
Peter
Hallo Rudi,
vielen Dank für Deine Hilfe. Ich werden Deine Lösung verwenden.
Gruss
Peter

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige