Ich muss aus zahlreichen multiselect Listboxen (138) Daten in eine Tabelle schreiben. Da ich vermeiden will, jede Listbox einzelnen auszulesen, habe ich mit eine Hilfstabelle erstellt und in dieser die Namen der Listboxen inklusive der Spalten und Startzeile hinterlegt, in welche die Daten übertragen werden soll. Nun mein Problem. Spreche ich eine einzelnen Listbox an, kann ich die Daten wie gewünscht übertragen:
Dim a As Integer
With ListBox_RK_BM1
For a = 0 To .ListCount - 1
If .Selected(a) Then
Sheets("RM-Vorschlag").Range("AQ" & (a + 4)) = .List(a)
End If
Next a
End With
Nun habe ich versucht, dass Ganze zu automatisieren:
Worksheets("HT_RM-Vorschlag").Activate
Dim LastRow As Long
Dim a, b, c, Spalte, ErsteZeile As Integer
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
For a = 2 To LastRow
Spalte = Sheets("HT_RM-Vorschlag").Cells(a, 4)
ErsteZeile = Sheets("HT_RM-Vorschlag").Cells(a, 5)
c = 0
With Sheets("HT_RM-Vorschlag").Cells(a, 2).Value
For b = 0 To .ListCount - 1
If .Selected(b) Then
Sheets("RM-Vorschlag").Cells(ErsteZeile + c, Spalte) = .List(b)
c = c + 1
End If
Next b
End With
Next a
Zwar bekomme ich mit "With Sheets("HT_RM-Vorschlag").Cells(a, 2).Value" den Wert für die jeweils gewünschte Listbox wieder, aber bei der Zeile "For b = 0 To .ListCount - 1" erhalte ich dann einen "Laufzeitfehler '424': Objekt erforderlich". Lasse ich das Value weg, der Fehler zu einem "Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht" draus. Was mache ich Falsch oder welche andere für Beginner geeignete Lösungsmöglichkeit bleibt mir, um die Daten aus den Listboxen zu übertragen, ohne das ich obigen Siebenzeiler 137 Mal angepasst in den Code kopieren muss?
Vielen Dank schon mal für eure Hilfe.
ps.: Sorry dafür, dass ich keine Funktion dafür gefunden habe, den Code gegenüber dem Text abzuheben.