Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA und dynamische Tabellen
30.08.2021 08:17:49
BuddyHoli
Hallo Excel-Community,
Ich habe eine Arbeitsmappe TEMPLATE mit 20 Arbeitsblättern. Jedes Arbeitsblatt enthält eine dynamische Tabelle.
Ich habe zudem 5 baugleiche Arbeitsmappen PART01 - PART05 mit den gleichen 20 Arbeitsblättern. Sie enthalten ebenfalls pro Arbeitsblatt eine dynamische Tabelle.
Meine Aufgabe:
- Alle dynamischen Tabellen der Arbeitsmappe TEMPLATE leeren
- Die Inhalte der Arbeitsblätter der 5 Arbeitsmappen PART01 bis PART05 in die jeweiligen Tabellen der Arbeitsblätter der Arbeitsmappe TEMPLATE kopieren.
Es geht mir hierbei nicht um die Technik zum Öffnen/Schließen der Arbeitsmappen, sondern einzig um den Umgang mit den dynamischen Tabellen.
Möchte ich beispielsweise die Tabellen in der Arbeitsmappe TEMPLATE leeren, würde ich bei "normalen" Tabellen so verfahren:

For cleanupStep = 0 To 19
curLastCol = Workbooks(theTemplate).Worksheets(wsName(cleanupStep)).Cells(2, 256).End(xlToLeft).Column
curLastRow = Workbooks(theTemplate).Worksheets(wsName(cleanupStep)).Cells(Rows.Count, 1).End(xlUp).Row
Workbooks(theTemplate).Worksheets(wsName(cleanupStep)).Range(Cells(2, 1), Cells(curLastRow, curLastCol)).ClearFormats
Workbooks(theTemplate).Worksheets(wsName(cleanupStep)).Range(Cells(2, 1), Cells(curLastRow, curLastCol)).ClearContents
Next cleanupStep
Problem 1: Nur die Tabelle des ersten Arbeitsplattes wird geleert. Danach Laufzeitfehler.
Ich habe auch schon versucht, einfach nur die Rows zu löschen, was zwar funktioniert, aber irgendwie nicht die Lösung sein soll.
Problem 2: Es bleibt beim Löschen der Rows immer eine Zeile der dynamischen Tabelle über.
Aufgrund des Abbruchs nach Arbeitsblatt 1 der Arbeitsmappe TEMPLATE bin ich noch nicht beim Kopieren der Daten aus Part01-Part05.
Ich denke, ich muss erstmal verstehen, wie man via VBA mit den dynamischen Tabellen umgehen muss.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA und dynamische Tabellen
30.08.2021 08:37:51
PawelPopolski
Moin,
nur mal so als Denkanstoss:
Alle Datensätze in einer Tabelle löschst du so

Public Sub deleteTable()
ActiveSheet.ListObjects("tabelle1").DataBodyRange.Delete
End Sub

AW: VBA und dynamische Tabellen
30.08.2021 09:09:37
BuddyHoli
Das ist schonmal super.
Aber was, wenn ich den Namen der dynamischen Tabelle zum Programmstart noch nicht kenne?
Kann ich irgendwie via Schleife alle dynamischen Tabellen aller Tabellenblätter leeren?
AW: VBA und dynamische Tabellen
30.08.2021 09:23:55
hary
Moin
Wenn der Listobj. Name unbekannt und evtl. mehrere Listobj.
Probier mal.

Dim i As Long
With ActiveSheet
If .ListObjects.Count = 0 Then Exit Sub '--wenn kein Listobj.
For i = 1 To .ListObjects.Count '--auch wenn mehrere Listobj.
.ListObjects(i).DataBodyRange.ClearContents
Next
End With
gruss hary
Anzeige
AW: VBA und dynamische Tabellen
30.08.2021 09:55:31
BuddyHoli
Ergibt
Laufzeitfehler "91"
Objektvariable oder With-Blockvariable nicht festgelegt
AW: VBA und dynamische Tabellen
30.08.2021 10:05:59
PawelPopolski
Hallo,
.clearcontents ist hier eher kontraproduktiv, da nur die Inhalte, niocht aber die Zeilen gelöscht werden - und wer will schon x leere Zeilen in seiner Tabelle haben.
.delete passt besser.
AW: VBA und dynamische Tabellen
30.08.2021 10:06:19
Pierre
Füg mal ein "End If" vor dem Next ein...manchmal hilft das.
Gruß Pierre
AW: VBA und dynamische Tabellen
30.08.2021 10:08:24
PawelPopolski
Evtl hast du versehentlich das with active sheet oder das end with gelöscht?
AW: VBA und dynamische Tabellen
30.08.2021 09:39:33
PawelPopolski

Sub AlleListobjects()
Dim tbl As ListObject
For Each tbl In ActiveSheet.ListObjects
Debug.Print tbl.Name
Next tbl
End Sub


Sub AlleListobjectsInAllenWS()
Dim tbl As ListObject
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each tbl In ws.ListObjects
Debug.Print tbl.Name
Next tbl
Next ws
End Sub

Anzeige
AW: VBA und dynamische Tabellen
30.08.2021 08:40:46
PawelPopolski
Hier (https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables) findest du übrigens eine umfassende Übersicht zu listobjects in VBA,
AW: VBA und dynamische Tabellen
30.08.2021 09:32:34
GerdL
Moin

Sub Unit()
Dim Blatt As Worksheet, LB As ListObject
For Each Blatt In ActiveWorkbook.Worksheets
For Each LB In Blatt.ListObjects
MsgBox "Worksheet: " & Blatt.Name
MsgBox "Listbox: " & LB.Name
Next
Next
End Sub
Gruß Gerd

227 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige