Guten Tag zusammen,
ich suche ein Makro, welches mir die aktuelle Tabelle bereinigt. Bereinigt meint in diesem Zusammenhang, dass alle Daten welche nicht sichtbar sind gelöscht werden. Die Tabelle ist hierbei immer unterschiedlich lang, die Spalten bleiben. Beispielsweise wie in der Datei: Berlin wird als Ort raus gefiltert, nun möchte ich auf den Button klicken und in der Tabelle ist der Datensatz von "Peter" nicht mehr finden.
danke
Hallöchen,
Zitat:dass alle Daten welche nicht sichtbar sind gelöscht werden
drehe die Bedingung mal so um, dass die sichtbaren unsichtbar werden und die unsichtbaren sichtbar. Dann löschst Du die sichtbaren. Den Code zum Löschen kannst Du aufzeichnen bzw. Du nimmst die SpecialCells - xlCellTypeVisible
Hallo amigo
So ein Makro könnte lauten:
Code:
Sub Makro1()
asn = ActiveSheet.Name
Sheets.Add
ActiveSheet.Name = "azbycx"
Sheets(asn).Select
Cells.Copy
Sheets("azbycx").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Selection.AutoFilter
Sheets(asn).Select
ActiveSheet.Shapes.Range(Array("Button 1")).Select
Selection.Copy
Sheets("azbycx").Select
Range("F1").Select
ActiveSheet.Paste
Range("A1").Select
Application.DisplayAlerts = False
Sheets("Tabelle1").Delete
Application.DisplayAlerts = True
Sheets("azbycx").Name = "Tabelle1"
End Sub
Das Makro kopiert Deine aktive Tabelle (ohne die nicht-sichtbaren Zeilen) und den Button in eine neue Tabelle.
Die "alte" Tabelle wird gelöscht und die neue erhält den Namen der alten.
Es empfiehlt sich, vor dem Testen eine Kopie der Original-Datei zu machen!
Es gibt sicher eine viel elegantere Variante für ein solches Makro. Ich hoffe, mein Makro hilft Dir fürs erste.
Grüsse Niclaus
Hallo
eleganter ist es nur die Zeilen zu löschen und nicht eine neue Tabelle erstellen.
Man beachte bitte das hier unbedingt erforderliche
Rückwaerts löschen mit Step -1 !! Sonst stimmt der Zeilenzahler nicht!!
mfg Gast 123
Code:
Sub Makro1_löschen()
Dim j As Long, lz1 As Long
'LastZell in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
'unsichbare Zeilen Rückwaerts löschen
For j = lz1 To 2 Step -1
If Rows(j).EntireRow.Hidden = True Then
Rows(j).Delete shift:=xlUp
End If
Next j
End Sub
Hinwes: Mein Makro prüft NICHT ob das was du da löschst auch richtig ist?? Sonst müsste man diese Namen vorher per MsgBox anzeigen!
Das hätte leider nicht geklappt, weil es Referenzen auf das Tabellenblatt gibt, daher darf nur neu gespeichert oder umbenannt werden, zudem sind die Tabellenblattnamen immer anders...ansonsten danke für deine Idee! Kann den Code glaub ich tatsächlich für etwas anderes nutzen
here go, exakt was ich brauche, danke! Ausgabe was gelöscht wird ist nicht wichtig. danke!
Hallöchen,
Sprich mal die Antworter an damit man weiß wen Du meinst..
ah dachte ich zitiere sorry, erste war für Nicolaus und das 2. auf gast123 bezogen.