Von |
schoentalegg |
eMail |
|
Am |
24. Oktober 2008 um 11:45:33 |
Frage |
Hallo Leute
Wieso funktioniert folgender Code nicht?Private Sub ComboBox1_Enter() ComboBox1.SelStart = 0 ComboBox1.SelLength = Len(ComboBox1.Text) DoEvents End Sub Ich möchte, dass wenn eine Combobox angeklickt wird, der gesamte Text des Eintrages markiert wird, damit man gleich mit überschreiben beginnen kann. Aktuell muss ich, nachdem ich auf die Combobox geklickt habe, zuerst selber den Text markieren, damit ich ihn überschreiben kann.
Der obengenannte Code wird bei Klick auf die Combobox korrekt durchlaufen, wenn ich bei DoEvents anhalte und im Direktfenster ComboBox1.SelLength oder ComboBox1.SelText abfrage, dann gibt er die erwarteten Werte aus (als wäre der ComboBox-Text komlett markiert. Der Cursor befindet sich jedoch einfach an der Stelle des Combobox-Textes, die ich beim anklicken erwischt habe - markiert ist gar nichts.
NB: ich habe eine Funktion eingebaut, die dann wenn ich ein Wort einzutippe beginne, bei jedem eingetipptem Buchstaben fortlaufend den ersten möglich Eintrag auswählt. Das funktioniert toll, aber das mühsame markieren ist etwas unschön.
Interessant ist, dass beim Laden der Userform der Text der Combox komplett markiert ist. Das ComboBox1_Enter - Ereignis wird da dort durch ...SetFocus in 'UserForm_Initialize' ausgelöst und die oben einkopierte Prozedur durchlaufen. Wenn ich diese ComboBox1_Enter-Prozedur auskommentiere, wird beim Laden der Userform ebenfalls nichts markiert!
Warum funktioniert die Prozedur beim Aufstart - nicht aber beim anklicken der Combobox? Es gibt weder beim Start noch beim anklicken andere Ereignisprozeduren, die durchlaufen werden.Private Sub UserForm_Initialize() Dim lRow As Long, i As Long blnIntern = True 'Verhindert das Ausführen anderer Prozeduren wie .._Change oder .._Click ComboBox1.Clear ComboBox2.Clear lRow = [A65536].End(xlUp).Row ComboBox1.AddItem "??????" ComboBox2.AddItem "neuen Artikel hinzufügen" For i = lngErsteDatenZeile To lRow ComboBox1.AddItem Cells(i, 1) ComboBox2.AddItem Cells(i, 2) Next i ComboBox1.ListIndex = 0 ComboBox2.ListIndex = 0 ComboBox1.SetFocus blnIntern = False End Sub Herzlichen Dank für Eure Hilfe
schoentalegg |
|