Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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 Change() Methode ohne Schleife
urmila
Hallo alle zusammen,
ich hoffe ihr könnt mir weiterhelfen...
Ich habe ein TextBox1 mit Change() Methode
Ich will nun, dass wenn ich einen Wert in dieser Textbox1 eingebe, x-beliebige Aktion ausführt. Anschließend soll er die Textbox1 entleeren. Das Problem ist nur dass er die definierte Aktion (meinetwegen MsgBox) zweimal ausführt, da er das entleeren auch als Change() hält.
Wie kann ich das umgehen, so dass ich nicht die ganze Userform unloaden und nochmals zeigen lassen muss?
Ich hoffe es war verständlich
Danke & LG
Urmila
AW: Textbox Change() Methode ohne Schleife
03.08.2010 13:29:07
Rudi
Hallo,
Private Sub TextBox1_Change()
Dim blnCode As Boolean
If Not blnCode Then
blnCode = True
'Code für Aktion
TextBox1 = ""
blnCode = False
End If
End Sub

Gruß
Rudi
AW: Textbox Change() Methode ohne Schleife
03.08.2010 13:37:20
urmila
Danke Rudi
das klappte leider nicht....dann fiel mir die if Anweisung...und habe es so gelöst..w.eiß zwar net ob das profffesssionelll ist... :)
If TextBox1.Value  "" Then
MsgBox "Hallo"
TextBox1 = ""
Else
Exit Sub
End If
LG
Urmila
AW: Textbox Change() Methode ohne Schleife
03.08.2010 13:40:21
IngGi
Hallo zusammen,
oder einfach so:
Private Sub TextBox1_Change()
Application.EnableEvents = False
TextBox1 = ""
Application.EnableEvents = True
End Sub
Gruß Ingolf
Anzeige
EanbleEvents
03.08.2010 14:02:25
Rudi
Hallo,
das wirkt nicht in einer Userform.
Gruß
Rudi
AW: Textbox Change() Methode ohne Schleife
03.08.2010 15:33:13
JogyB
Hallo Urmila,
Rudi hat vergessen, die Variable blnCode als statisch zu deklarieren, also
Static blnCode As Boolean
Dann klappt es auch.
Gruß, Jogy
AW: Textbox Change() Methode ohne Schleife
03.08.2010 14:31:56
urmila
Hallo
Danke für eure Hilfe.
Zwar geht das mit der If Anweisung, doch das Problem, was ich vergessen habe zu eräwhnen, ist leider nicht behoben.
Ich habe einen Barcode-Scanner, ich will das die ganze Nummer im Textbox1 eingelesen wird und erst dann eine Aktion ausführen. Bisher ist es so, dass er die ersta Zahl eines Barcodes annimmt und gleich Aktion ausführt (suchen, filtern etc.) da kommt dann immer eine Fehlermeldung.
Kann man mir hier vll weiterhelfen?
Danke und LG
Urmila
Anzeige
AW: Textbox Change() Methode ohne Schleife
03.08.2010 15:35:41
JogyB
Hallo Urmila,
wenn es z.B. 10 Zeichen sein sollen:
Private Sub TextBox1_Change()
Static blnCode As Boolean
If Not blnCode And Len(TextBox1.Value) = 10 Then
blnCode = True
'Code für Aktion
TextBox1 = ""
blnCode = False
End If
End Sub
Gruß, Jogy
AW: Textbox Change() Methode ohne Schleife
04.08.2010 09:00:39
urmila
Hallo Jogy
danke, das ist eine gute Lösung, sofern die Länge auf 10 beschränkt ist.
Aber was wenn es kürzer oder länger ist?
Kann man das net so einrichten dass es nach Eingabe ca 1-2 sekunden wartet und dann eine Aktion ausführt?
Danke und LG
Urmila
AW: Textbox Change() Methode ohne Schleife
04.08.2010 09:32:18
JogyB
Hallo Urmila,
es gibt da diverse Möglichkeiten. Das Warten halte ich dabei aber für die schlechteste, da schaut man mal kurz zur Seite und schon ist die Eingabe futsch. Ich würde es eher so machen, dass bei Drücken der Eingabetaste die Eingabe bestätigt und das Makro ausgeführt wird.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'Code für Aktion
TextBox1 = ""
End If
End Sub

Der alte Code fliegt dann raus.
Gruß, Jogy
Anzeige
AW: Textbox Change() Methode ohne Schleife
04.08.2010 10:03:33
urmila
Hallo Jogy
danke nochmals, werde gleich ausversuchen.
Doch würde mich interessieren wie es mit der Wartezeit auszusehen hat....könntest/würdest du das auch posen, bitte?
Ich gehe aber davon aus dass ich nur mit dem BarCode Scanner scannen werde...daher dachte ich an diese Lösung....
Danke und LG
Urmila
AW: Textbox Change() Methode ohne Schleife
04.08.2010 14:28:05
JogyB
Hallo Urmila,
das hier in das UserForm:
Dim myTime As Date
Private Sub TextBox1_Change()
If CodeChange Then Exit Sub
Debug.Print myTime
' alten Time stoppen, egal, wenn es einen Fehler gibt
On Error Resume Next
Application.OnTime myTime, "deinCode", , False
On Error GoTo 0
myTime = Now + TimeSerial(0, 0, 2)
Application.OnTime myTime, "deinCode"
End Sub

Und das hier in ein allgemeines Modul:
Public CodeChange As Boolean
Sub deinCode()
' hier der Code, mit dem Du die Daten verarbeitest
' anschließend Textbox leeren
CodeChange = True
UserForm1.TextBox1 = ""
CodeChange = False
End Sub
Wartet 2 Sekunden, kürzer würde ich nicht machen.
Gruß, Jogy
Anzeige
vielen lieben Dank Jogy....
04.08.2010 14:35:40
urmila
LG
Urmila

180 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige