Hallo nochmal,
inzwischen hab ich eine Lösung gefunden. Ich schicke sie euch mal.
Vielleicht kann sie jemandem einmal helfen:
'marc the selected questions in the excel table; input parameters:listbox, tablename, tabname
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 jeden Eintrag in der 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
Else 'wenn die Zeile nicht 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 = "" 'setzt ein " " in der spalte in general
End If
Next j
End If
Next i
End If
Next
End Sub
'method, which creates a new tab and copies the selected questions into it
Sub createNewTab(ByVal NewTabName As String, ByVal OldTabName As String)
'check if there is no NewTabName; if it already exist exit the sub
Dim i As Integer
For i = 1 To Worksheets.Count
If Worksheets(i).Name = NewTabName Then
Exit Sub
End If
Next
'add a new sheet in green
Sheets.Add
ActiveSheet.Tab.ColorIndex = 4
ActiveSheet.Name = NewTabName
End Sub
'method, which copies the selected questions into the new tabs
Sub copyQuestions(ByVal NewTabName As String, ByVal OldTabName As String)
For j = 2 To 300 'gehe von oben nach unten durch
If Worksheets(OldTabName).Cells(j, 1).Value = "x" Then 'wenn die frage in dem alten tab mit einm x markiert ist, dann
If Worksheets(NewTabName).Cells(j, 2).Value = "" Then 'prüfe ob in der zeile im neuen tab etwas steht -> nur reinkopieren, wenn die zeile leer ist, sonst gibt es doppelte zeichen
Worksheets(OldTabName).Rows(j).Copy Worksheets(NewTabName).Rows(j) 'wenn die Zeile leer ist, dann kopieren die komplette zeile in das neue tab
End If
Else
'Worksheets(NewTabName).Rows(j).Value = "" 'xxxxxxxxx wenn die frage nicht mit einem x markiert ist, schreibe "" in die Zeile im neuen Tab
Worksheets(NewTabName).Rows(j).ClearContents
End If
Next
End Sub
|