Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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
Inhaltsverzeichnis

Laufzeitfehler bei DataBodyRange.Delete

Laufzeitfehler bei DataBodyRange.Delete
09.10.2023 11:04:26
Rebecca
Hallo Zusammen,

ich habe in einem Tabellenblatt 3 intelligente Tabellen, damit ich einfach nach Suchbegriffen selektieren kann. Diese Tabellen werden mittels eines Macros austomatidsch befüllt mit Daten aus anderen Tabellenblättern.
Nun will ich die Tabellen immer erst 'leeren' bevor sie neu befüllt werden. Dafür benutze ich folgenden Code:



Private Sub Worksheet_Activate()

If Not Worksheets("aktuelles Jahr").ListObjects("baulicheBedarfe").DataBodyRange Is Nothing Then
Worksheets("aktuelles Jahr").ListObjects("baulicheBedarfe").DataBodyRange.Delete
End If
If Not Worksheets("aktuelles Jahr").ListObjects("Wartung").DataBodyRange Is Nothing Then
Worksheets("aktuelles Jahr").ListObjects("Wartung").DataBodyRange.Delete
End If
If Not Worksheets("aktuelles Jahr").ListObjects("Havarie").DataBodyRange Is Nothing Then
Worksheets("aktuelles Jahr").ListObjects("Havarie").DataBodyRange.Delete
End If

End Sub


Doch leider wird mir dann folgender Fehler angezeigt:
"Laufzeitfehler '1004': Das wird nicht funktionieren, weil dadurch Zellen in einer Tabelle in Ihrem Arbeitsblatt verschoben würden."

Leider weiß ich nicht weiter. Kann mir bitte jemand helfen?
Viele Grüße
Rebecca

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler bei DataBodyRange.Delete
09.10.2023 11:11:45
daniel
Hi

Wenn man Zellen löscht (.Delete) und werden die Zellen, die rechts oder unterhalb liegen, verschoben, weil sie nachrücken müssen.
Löscht man keine ganzen Zeilen oder Spalten, muss man angeben, welche Zellen nachrücken sollen, also
.Delete Shift:=xlUp oder
.Delete Shift:=xltoleft

Sind in beiden Stellen Elemente, die nicht verschoben werden dürfen (z.B. weitere Listobjekte), dann darf man die Zellen nicht löschen, sondern nur den Inhalt leeren (.Clear)

Gruß Daniel
AW: Laufzeitfehler bei DataBodyRange.Delete
09.10.2023 11:18:29
onur
Versuch es mit Clear statt Delete.
AW: Laufzeitfehler bei DataBodyRange.Delete
09.10.2023 12:07:13
GerdL
Moin Rebecca!

Sollen die formatierten intelligenten Tabellchen bleiben, müssen sie einen Databodyrange mit mindestens einer Zeile behalten.
Private Sub Worksheet_Activate()


Dim arr As Variant, liOName As Variant


arr = Array("baulicheBedarfe", "Wartung", "Havarie")

With Worksheets("aktuelles Jahr") 'oder With Me (?)

For Each liOName In arr
If Not .ListObjects(liOName) Is Nothing Then
With .ListObjects(liOName)
.DataBodyRange.Clear
For a = .ListRows.Count To 2 Step -1
.ListRows(a).Delete
Next a
End With
End If
Next liOName

End With


End Sub


Gruß Gerd
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige