AW: ComboBox inhalt markieren
09.06.2006 15:18:20
Bertram
Hi Werner,
im Allgemeinen rate ich dir für die Comboboxen, Textboxen etc. geeignete Namen zu vergeben, um diese schneller ausfindig zu machen und den Code einfacher verständlich.
Ich habe mal dein UserForm_Activate-Ereignis ersetzt durch
Private Sub UserForm_Initialize()
Me.TextBox10.Value = Date
Application.ScreenUpdating = False
Sheets("Hilfe").Activate
Me.ComboBox3.RowSource = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Address
Me.ComboBox13.RowSource = Range(Cells(1, 4), Cells(1, 4).End(xlDown)).Address
Me.ComboBox12.RowSource = Range(Cells(1, 22), Cells(1, 22).End(xlDown)).Address
Sheets("Equipmen").Activate
Me.ComboBox5.RowSource = Range(Cells(2, 1), Cells(1, 1).End(xlDown)).Address
Application.ScreenUpdating = True
End Sub
ist irgendwie effizienter als deine Schleifen zum auffüllen der Comboboxen.
Das ComboBox_Change-Ereignis würde ich in dem Fall nicht verwenden, da nach jedem Buchstaben, bzw. Ziffer die eingegeben wird, das Ereignis ausgelöst wird. Das macht das Programm langsamer.
Benutze lieber:
Private Sub ComboBox5_AfterUpdate()
With Sheets("Equipmen")
Me.TextBox1.Value = .Cells(Me.ComboBox5.ListIndex + 2, 3).Value
Me.TextBox2.Value = .Cells(Me.ComboBox5.ListIndex + 2, 2).Value
Me.TextBox3.Value = .Cells(Me.ComboBox5.ListIndex + 2, 4).Value
End With
End Sub
Das was du möchtest, sollte normalerweise schon mit der SetFocus-Methode funktionieren, tut's aber aus irgend einem kühlen Grunde, den ich nicht erkenne, nicht. Aber du erzielst das Gleiche, wenn du die Style-Eigenschaft der ComboBox auf 2 (fmStyleDropDownList) setzt. D.h. die ComboBox verhält sich jetzt wie eine ListBox und es muss ein Wert aus der Liste gewählt werden. Es können also gar keine falschen Nummern ausgewählt werden.
Das TextBox1_Change-Ereignis brauchst du dann nicht mehr.
Hoffe das hilft dir etwas weiter.
Gruß
Bertram