AW: Listbox abfrage
08.02.2021 07:13:41
Werner
Hallo,
der Code ist auch für eine "Multiselect" ListBox. Ich habe jetzt keine Ahnung wie ich darauf gekommen bin. Hab jetzt alle deine Beiträge nochmals durchgelesen, da war aber nirgends was von einer Multiselect Listbox. Also - keine Ahnung wie ich auf das Brett gekommen bin.
Hier jetzt nochmal der Code:
Private Sub CommandButton18_Click()
Dim N As Long, raMitarbeiter As Range, raStunden As Range
If b Then Exit Sub
b = True
With Worksheets("daten").Range("a3:i3")
.AutoFilter Field:=7, Criteria1:=ComboBox2.Value
.AutoFilter Field:=8, Criteria1:=ComboBox3.Value
End With
With Worksheets("Übersicht")
For N = 0 To ListBox1.ListCount - 1
Set raMitarbeiter = .Columns("A").Find(what:=Me.ListBox1.List(N, 0), _
LookIn:=xlValues, lookat:=xlWhole)
Set raStunden = .Rows(5).Find(what:=Me.ListBox1.List(N, 1), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raMitarbeiter Is Nothing And Not raStunden Is Nothing Then
.Cells(raMitarbeiter.Row, raStunden.Column) = _
.Cells(raMitarbeiter.Row, raStunden.Column) + CDbl(Me.ListBox1.List(N, 5))
Set raMitarbeiter = Nothing: Set raStunden = Nothing
End If
Next N
End With
Set raMitarbeiter = Nothing: Set raStunden = Nothing
End Sub
Der Wert aus der Listbox muss per CDbl in die Zelle geschrieben werden. CDate schreibt ein Datum, das war nur als Beispiel, da die angesprochene Spalte in der Listbox ein Datum enthalten hat.
Zudem mußt du den Stundenwert aus der Spalte 5 der Listbox auf den Wert der Zelle aufaddieren. Zumindest im Beispiel hast du ja Personen in der Listbox, die mehrfach Stunden in der selben Kostenstelle erbracht haben. Wenn du jetzt den Listbox-Wert nicht auf den Wert der Zielzelle aufaddierst, dann hast du immer nur den letzten Wert in der Zielzelle stehen.
Ich will dir ja nicht zu nahe treten, aber der meiste Code ist ziemlich gruselig. Lauter Select und Activate.
Das braucht in 99,9 Prozent der Fälle kein Mensch und macht den Code nur langsam.
Zu Select/Activate siehe auch mal hier: https://www.online-excel.de/excel/singsel_vba.php?f=78
Gruß Werner