AW: Leider irgendwie mein Muster
05.12.2008 19:19:55
fcs
Halllo Walter,
durch den Autofilter und das Ändern der Komboboxwerte kam es beim Fokusieren zu mehreren Auslösungen des Change-Ereignis.
Da du Select-Anweisungen für Zellen in deinem Code hattest, verlor die Kombobox ihren Focus und das wàr's.
Ich hab es mal angepasst. Durch eine speziell gesetzte Variable wird verhindert, dass die Change-Prozedur während der Abarbeitung der Focus-Prozedur abgearbeitet wird. Das Setzen der Auswahlliste für die Kombobox muss in die Focus-Prozedur, sonst gibt es ein Problem beim 1. Aufruf der Fosus-Prozedur, da die Kombobox noch gar keine Daten hat.
Der Autofilter wird ggf. ebenfalls in der Focus-prozedur aktiviert.
Gruß
Franz
Option Explicit
Private bolFocus As Boolean
Private Sub ComboBox1_Change()
Dim FI$
If bolFocus = True Then Exit Sub
FI = Me.ComboBox1.Text
If FI = "ALLE" Then
Me.AutoFilter.Range.AutoFilter Field:=3
Else
Me.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=FI & "*"
End If
'-- jetzt wird die Filterungszahl neben Namen gesetzt --------
If Me.ComboBox1.ListIndex -1 Then
Cells(Me.ComboBox1.ListIndex + 1, 16) = Range("A4").Value
End If
End Sub
Private Sub ComboBox1_GotFocus()
Dim varMerken
On Error Resume Next
bolFocus = True
'Merken des Eintrags für 1. Eintrag in Spalte O
If Not ActiveSheet.AutoFilterMode Then
Range(Cells(5, 1), Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, 13)).AutoFilter
Else
Me.ShowAllData
End If
varMerken = Cells(1, 15)
Me.ComboBox1.List = Me.Range("O1:O" & Me.Cells(Me.Rows.Count, 15).End(xlUp).Row).Value
Me.ComboBox1.ListIndex = 0 'Listbox auf 1. Wert setzen, scrollt auch Anzeige
Me.ComboBox1.ListIndex = -1 'Listbox auf keinn Wert setzen
'gemerkten Eintrag für 1. Zeile in Spalte E wieder eintragen
Cells(0 + 1, 15) = varMerken
bolFocus = False
End Sub