Problem mit Listbox.Selected() und gefil
14.08.2020 11:20:05
Frank
Auf einer UF habe ich eine Listbox, welche mit Seriennummern anzeigt. Diese kommen von _
verschiedenen Blättern. Der Code hierfür ist:
Sub SN_Anzeige()
Dim last As Long
Dim i As Integer
Dim FtWert As String
Me.lstSeriennummern.Clear
FtWert = 0 ' Platzhalter für Filter über Combobox
Application.ScreenUpdating = False
If ExistiertBlatt(lastItem) = False Then
ewb.Worksheets("hwvlg").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = lastItem
Else
'Seriennummern darstellen
Me.txtSeriennummer.Value = ""
Me.txtReferenz.Value = ""
last = ewb.Worksheets(lastItem).Cells(Rows.Count, 1).End(xlUp).Row
If Me.optVorhanden.Value = False Then
'Anzeige ungefiltert
ewb.Worksheets(lastItem).Rows("1:1").AutoFilter
For i = 2 To last
If ewb.Worksheets(lastItem).Cells(i, "A").EntireRow.Hidden = False Then
Me.lstSeriennummern.AddItem ewb.Worksheets(lastItem).Cells(i, 1).Value
End If
Next i
Else
ewb.Worksheets(lastItem).Rows("1:1").AutoFilter Field:=2, Criteria1:=FtWert
'Anzeige gefiltert
For i = 2 To last
If ewb.Worksheets(lastItem).Cells(i, "A").EntireRow.Hidden = False Then
Me.lstSeriennummern.AddItem ewb.Worksheets(lastItem).Cells(i, 1).Value
End If
Next i
End If
End If
'ewb.Worksheets(lastItem).Rows("1:1").AutoFilter
ewb.Worksheets("Center").Activate
Application.ScreenUpdating = True
End Sub
Das funktioniert wunderbar, Anzeige ändert sich ob un- oder gefiltert.
Jetzt kommt mein Problem.
In der ungefilterten Liste bekomme ich über .Seleted() die korrekte Zeile im Tabellenblatt zurück geliefert. Bei der gefilterten Liste ist alles bunt durcheinander.
Hier der Code für die AUdwahl in der Listbox:
Sub SN_Select()
Dim i As Integer
Me.txtBemerkung.Value = ""
Me.txtRegal.Value = ""
Me.txtDatum.Value = ""
Me.txtReferenz.Value = ""
Me.txtSeriennummer.Value = ""
'Bei Auswahl einer Seriennummer...
For i = 0 To Me.lstSeriennummern.ListCount - 1 '(-1 wegen Row.Source)
If Me.lstSeriennummern.Selected(i) = True Then
MsgBox i + 2
MsgBox "cbIndex " & CInt(ewb.Worksheets(lastItem).Cells(i + 2, "B").Value)
Me.cbLager.ListIndex = CInt(ewb.Worksheets(lastItem).Cells(i + 2, "B").Value)
Me.txtBemerkung.Value = ewb.Worksheets(lastItem).Cells(i + 2, "F").Value
Me.txtRegal.Value = ewb.Worksheets(lastItem).Cells(i + 2, "C").Value
Me.txtDatum.Value = CDate(ewb.Worksheets(lastItem).Cells(i + 2, "D").Value)
Me.txtReferenz.Value = ewb.Worksheets(lastItem).Cells(i + 2, "E").Value
Me.txtSeriennummer.Value = ewb.Worksheets(lastItem).Cells(i + 2, "A").Value
lastSN = i
End If
Next
End Sub
Wie komme ich bei einer Auswahl in der Listbox, die richtige Reihe der Tabelle heraus?
Viele Grüße, Frank