Hallo zusammen,
ich stecke mal wieder an einer Stelle fest. Vielleicht habt ihr eine Idee bzw. einen Ansatz dazu:
Also ich habe eine Tabelle in Excel und eine UserForm mit Listboxen. Im Laufe meines Programmes werden Elemente aus der Tabelle in die Listboxen geladen.
Die Listbox ist so eingestellt, dass man mehrere Elemente gleichzeitig auswählen kann. (MultiSelect= 1-fmMultiSelectMulti)
Nachdem man also Elemente ausgewählt hat und einen Button klickt, werden zuerst die ausgewählten Elemente in der Exceltabelle markiert. ( Ich schreibe ein "x" in die Zelle vor dem Element)
Sub MarcSelectedItems(ByVal Listbox As MSForms.Listbox, ByVal Tabellenname As String, ByVal tabname As String)
Dim oLo As ListObject
Dim j As Integer
j = 3
For Each oLo In Sheets(tabname).ListObjects 'passende Tabelle in general suchen
If oLo.Name = Tabellenname Then 'wenn der übergebene Name mit dem Tabellenobjekt auf der Generalseite übereinstimmt
For i = 0 To Listbox.ListCount - 1 'geh durch die Listbox durch
If Listbox.Selected(i) Then 'wenn die Zeile markiert wurde, dann
question = Listbox.List(i, 0) 'schreibe die ausgewählte Frage in die Variable question
For j = 2 To 200 'durchsuche den übergebenen Tab nach der frage, die jetzt in question steht
If question = Worksheets(tabname).Cells(j, 2).Value Then 'wenn die frage gefunden wurde
Worksheets(tabname).Cells(j, 1).Value = "x" 'setzt ein x in der spalte in general
End If
Next j
End If
Next i
End If
Next
End Sub
Danach rufe ich eine Methode auf, die neue Taps in Excel erstellt und die Zeilen, die mit einem "x" markiert wurden, in diese neuen Taps kopiert.
Sub createNewTab(ByVal NewTabName As String, ByVal OldTabName As String)
'add a new sheet in green
Sheets.Add
ActiveSheet.Tab.ColorIndex = 4
ActiveSheet.Name = NewTabName
'fill in all selected questions
For j = 2 To 300
If Worksheets(OldTabName).Cells(j, 1).Value = "x" Then 'wenn die frage in dem alten tab mit einm x markiert ist, dann
Worksheets(OldTabName).Rows(j).Copy Worksheets(NewTabName).Rows(j) 'kopieren die komplette zeile in das neue tab
End If
Next
End Sub
Das funktioniert alles ohne Probleme.
Jetzt kommt mein "Problem".
Ich möchte, dass bei einem erneuten Aufruf die Elemente in der Listbox, die ich in dem Ablauf davor schon einmal ausgewählt habe, automatisch wieder ausgewählt sind.
(Vielleicht hilft das dabei: die Elemente sind in Excel immernoch durch das "x" markiert.)
Bei dem erneuten Aufruf sollen auch keine neuen Taps in Excel erstellt werde, da diese ja schon vorhanden sind.
Man soll dann die Möglichkeit haben die Auswahl in der Listbox zu ändern/ zu ergänzen und in den vorher erstellten neuen Taps sollen dann die aktuell ausgewählten Elemente erscheinen.
Ich hoffe ich konnte das einigermaßen verständlich beschreiben und ihr könnt mir helfen.
|