Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Beim Kopieren (mit VBA) bleiben 'Reste'?

Beim Kopieren (mit VBA) bleiben 'Reste'?
26.09.2024 12:44:06
Andrea
Hallo an die VBA-Profis,
ich habe folgendes Problem (s. Anhang):

ich habe verschiedene Tabellenblätter, die alle einen vergleichbaren Aufbau haben. Darin kommt u.a. eine intelligente Tabelle vor, die unterschiedliche Zeilenanzahlen haben können. Nach bestimmten Zeitabschnitten möchte ich alle Tabellenblätter auf den Stand des TB 'Muster' bringen.

Hier die Datei: https://www.herber.de/bbs/user/172420.xlsm

Mit Hilfe des Forums habe ich den Code zusammen gestellt, der eigentlich funktioniert - bis auf: bei TB, die länger als das Muster sind bleibt beim Aufruf des Makros unter den Tabelle noch ein 'Rest'.

Wie kann - nach Anpassung des Codes - dieser 'Rest' auch noch gelöscht werden?

Vielen Dank schon mal
Liebe Grüße
Andrea
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bezogen auf deine...
26.09.2024 13:13:50
Andrea
Hallo Case,

vielen Dank für die schnelle und super Lösung. Funktioniert prima.
Nun war die Datei nur ein Beispiel. Wenn der Bereich der intelligenten Tabelle nun von B13:AU40 reicht?
Wo bzw. was müsste geändert werden? (Entschuldigung, hätte ich ja auch gleich so schreiben können ;-( )

Viele Grüße
Andrea
Anzeige
Ja war einfach...
26.09.2024 13:50:59
Case
Moin, :-)

... nur schnell hingeschrieben von mir. ;-)

Nimm den Columns.Count:
https://learn.microsoft.com/de-de/office/vba/api/excel.listcolumns.count
ThisWorkbook.Worksheets("Muster").ListObjects(1).ListColumns(1).DataBodyRange.Resize(, .ListColumns.Count).Copy .DataBodyRange(1, 1)

Wenn du öfters mit ListObjects arbeitest, dann schau mal hier: ;-)
https://www.thespreadsheetguru.com/listobject-tables-vba/

Servus
Case
Anzeige
AW: Ja war einfach...
26.09.2024 13:55:45
Andrea
Hallo Case,

Danke nochmals. Alles Bestens.
Super auch der Link für die intelligenten Tabellen. Die nutze ich tatsächlich häufig.

Liebe Grüße
Andrea
AW: Bezogen auf deine...
26.09.2024 13:32:40
Yal
Hmm... komme auf die gleiche Idee, nur das Übertragen der Daten hatte ich mir leichter vorgestellt.
Die wesentliche unterschied ist, dass ich alle Zeile lösche und dementsprechend eine Zeile wieder erzeugen muss (ListRows.Add)

Sub KopiereUndLoescheBereich_ab_TB7()

Dim M As ListObject

Set M = Worksheets("Muster").ListObjects(1)
For Each ws In Worksheets
If ws.Name > M.Parent.Name Then
With ws.ListObjects(1)
Do While .ListRows.Count
.ListRows(1).Delete
Loop
.ListRows.Add
M.ListColumns(1).DataBodyRange.Resize(, M.ListColumns.Count).Copy .DataBodyRange(1, 1)
End With
End If
Next
End Sub


@Andrea: ggü Cases Code gibt es hier keine Fixierung auf 6 Spalten. Es wird die Anzahl von Spalten von Muster übernommen.

VG
Yal
Anzeige
Einfacher geht doch
26.09.2024 13:39:32
Yal
dachte ich mir, dass es doch einfacher gehen muss (Tückisch, der Objektmodell von ListObject)

Sub KopiereUndLoescheBereich_ab_TB7()

Dim M As ListObject

Set M = Worksheets("Muster").ListObjects(1)
For Each ws In Worksheets
If ws.Name > M.Parent.Name Then
With ws.ListObjects(1)
Do While .ListRows.Count > 1
.ListRows(1).Delete
Loop
M.DataBodyRange.Copy .DataBodyRange(1, 1)
End With
End If
Next
End Sub


VG
Yal
Anzeige
AW: Einfacher geht doch
26.09.2024 13:52:30
Andrea
Hallo Yal,

vielen Dank auch für deine Lösung.
Funktioniert (natürlich) ebenso, mit der tollen Möglichkeit der Spaltenanzahlunabhängigkeit.

Liebe Grüße
Andrea

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige