Hallo,
ich habe nun schon einige Seiten gegoogelt. Irgendwas mache ich falsch. Ich möchte lediglich, dass nach dem Bestätigen der MessageBox der Cursor zurück in das Textfeld springt. Ich weiß nicht wie.
Sendkeys möchte ich auch nicht nutzen, das macht nur Probleme.
Hier der Code:
Code:
Private Sub TextBox_Date_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox_Date) Then
TextBox_Date = Format(TextBox_Date, "DD.MM.YYYY")
End If
If Not TextBox_Date = "" Then
If Not IsDate(TextBox_Date) Then
TextBox_Date = ""
MsgBox "Falsches Datumsformat eingegeben. Gültige Beispiele:" & Chr(13) & Chr(13) & "TT.MM.JJJJ | TT.MM.JJ | T.MM.JJJJ | T.M.JJ | TT-MM-JJJJ", vbOKOnly + vbExclamation, ""
Cancel = True
TextBox_Date.SetFocus
End If
End If
End Sub
Das Problem habe ich noch bei einem anderen Textfeld. Wie kann ich das denn realisieren?
PS: Cancel = True und SetFocus funktioniert beides nicht.
Dankeschön.
Moin!
Ich löse dies in einem meiner Projekte so:
(Ich nehme das Exit-Event)
Private Sub txtBeginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With txtBeginn
If .Text = "" Then Exit Sub
If IsDate(.Text) Then
.Text = Format(.Text, "dd.mm.yyyy")
Label2 = "Beginn:" & Chr(10) & Format(.Text, "DDDD")
Else
msgHilfeDatum
.Text = ""
Cancel = True
End If
If txtEnde <> "" And IsDate(txtEnde) Then
lblTage.Caption = ABWTage(.Value, txtEnde.Value)
End If
End With
End Sub
Wie Du siehst funktioniert dies durchaus mit Cancel = True
Gruß Ralf
Hi Ralf,
danke für die Antwort.
Mein Versuch das entsprechend umzusetzen scheitert.
Code:
Private Sub TextBox_Date_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox_Date
If .Text = "" Then Exit Sub
If IsDate(.Text) Then
.Text = Format(.Text, "dd.mm.yyyy")
Else
MsgBox "Falsches Datumsformat eingegeben. Gültige Beispiele:" & Chr(13) & Chr(13) & "TT.MM.JJJJ | TT.MM.JJ | T.MM.JJJJ | T.M.JJ | TT-MM-JJJJ", vbOKOnly + vbExclamation, ""
.Text = ""
Cancel = True
End If
End With
End Sub
Wüsste mit dem Label12 und dem folgenden Code-Ausschnitt nichts anzufangen. Ist das für die Funktion relevant? Mit dem geänderten Code oben ohne diese Schnipsel springt er nicht zurück auf das Textfeld....
Code:
If txtEnde <> "" And IsDate(txtEnde) Then
lblTage.Caption = ABWTage(.Value, txtEnde.Value)
End If
Nun,
Ich habe der Einfachheit halber einen funktionierenden Code aus einem sehr umfangreichen Projekt kopiert und bin davon ausgegangen, dass Du ihn anpassen kannst.
Dies hast Du ja imo auch korrekt umgesetzt.
Wenn es dennoch nicht bei Dir funktioniert, wäre es an der Zeit, die Datei nebst Deinem geänderten Code hier hochzuladen.
Ich schaue dann gern genauer hin!
Gruß Ralf
Hi,
danke erstmal. Ich wusste nicht einmal, dass ich es richtig umgesetzt habe. Ich kann kein VBA und werde es auch nie lernen. Ich probiere einfach immer und füge die Schnipsel die ich finde irgendwie zusammen. Und dann google ich wenn etwas nicht geht. Nur hier kam ich nicht weiter. Hatte zuvor sendkeys verwendet und den Numlock-Bug. Nun wollte ich es anders lösen aber Cancel = True wollte dann wohl nicht.
Da meine Datei gegen jegliche VBA Standards verstößt, wie ich inzwischen weiß, möchte ich Dir diese peinliche Vorlage gerne ersparen und werde es dann eben so lassen.
Wäre nur schön, wenn der Cursor wieder in das Textfeld gesprungen wäre. Eigentlich muss ich für mich nur noch ein Problem lösen und dann habe ich auch keine Lust mehr.#
Vielleicht kannst Du da ja weiterhelfen. Ich habe nämlich keine Ahnung von Formeln in VBA. Grundsätzlich ist mein Ziel, dass ich nach dem Verlassen eines Textfeldes eine einfache Formel ausführen möchte, dessen Ergebnis in eine Zelle geschrieben wird:
Die eingegebene Zahl im Textfeld ist z.B. "2"
Die Formel ist "2"/100
und in der Zelle wird dann geschrieben: (Ergebnis)% (also 20%), jedes "2." Teil.
Also: 20%, jedes 2. Teil.
Das heißt das Ergebnis steht vorne, dahinter das % Zeichen und die 2 ist der Wert, der ja schon eingegeben wurde. Ich kann es nicht besser erklären und bin eh gerade zu müde. Ich werde aber am Wochenende mal googlen, wie das mit diesen Strings mit Formeln geht
.
Hallöchen,
im Prinzip was in der Art:
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
If .Text = "" Then Exit Sub
If IsDate(.Text) Then
.Text = Format(.Text, "dd.mm.yyyy")
Else
MsgBox "Falsches Datumsformat eingegeben. Gültige Beispiele:" & Chr(13) & Chr(13) & "TT.MM.JJJJ | TT.MM.JJ | T.MM.JJJJ | T.M.JJ | TT-MM-JJJJ", vbOKOnly + vbExclamation, ""
.Text = ""
Cancel = True
End If
.SetFocus
End With
End Sub
Vom Prinzip ja, aber der Cursor wechselt nicht zurück in das Textfeld.
Bei mir schon.
Ansonsten hätte ich hier ja nicht geantwortet.
Außerdem brauchst Du Dich nun wirklich nicht zieren, die Datei hochzuladen.
Keine Bange, hier wirst Du nicht kritisiert, sondern hier wird Dir geholfen!
Guten Abend,
ich habe heute ein wenig mit dem Dokument gespielt. Habe eine Userform für Prüfmerkmale neu aufgebaut, dabei habe ich mir aber eine Funktion beim Anlegen eines Merkmals zerschossen.
Bzw. jetzt habe ich mir einen neuen Fehler eingebaut. Naja, macht zwar Spaß, aber ich bin so platt. Da ich so nett behandelt wurde, werde ich das Dokument trotzdem hochladen, da ja auch der Fokus-Fehler noch vorliegt.
Hallo,
es sieht so aus, dass das UserForm1 eine Macke hat. Derselbe Code in einem neuen UF in derselben Datei funktioniert wie gewünscht.
Gruß Uwe