Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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

ClearContents für mehrere Tabellenblätter LF 1004

ClearContents für mehrere Tabellenblätter LF 1004
18.08.2017 10:39:22
Anna
Hallo zusammen,
ich habe folgendes Problem:
Für ein Sub, das ich geschrieben habe werden Ergebnisse in vier verschiedenen Tabellenblättern _
einer Datei ausgegeben. Deshalb möchte ich am Anfang der Sub die jeweiligen Inhalt der Tabellenblätter löschen, damit immer die "aktuellen" Ergebnisse _
zu sehen sind. Der Ergebnisbereich ist variabel, deshalb die Ansprache mit .End(xlDown) bzw. .End(xlToRight)
Hier mein Code:

Sub testlöschen()
Worksheets("ComStrom").Range(Range("B2"), Range("B2").End(xlDown).End(xlToRight)). _
ClearContents
Worksheets("Reststrom").Range(Range("B2"), Range("B2").End(xlDown).End(xlToRight)). _
ClearContents
Worksheets("ErlösComStrom").Range(Range("B2"), Range("B2").End(xlDown).End(xlToRight)). _
ClearContents
Worksheets("Einspeisung").Range(Range("B2"), Range("B2").End(xlDown)).ClearContents
End Sub

Jede Programmierzeile einzeln funktioniert, aber wenn ich alle vier Tabellenblätter auf einmal löschen möchte, bekomme ich den Laufzeitfehler 1004 (Anwendungs- oder objektdefinierter Fehler).
Zu dem Laufzeitfehler habe ich nur Anmerkungen über verbundene Zellen gefunden, die habe ich in den betreffenden Tabellenblättern definitiv nicht.
Auch, wenn ich vorher über .Select das betreffende Tabellenblatt anspreche, bekomme ich den gleichen Fehler.
Sub testlöschen()
Worksheets("ComStrom").Range(Range("B2"), Range("B2").End(xlDown).End(xlToRight)).Select
Selection.ClearContents
Worksheets("Reststrom").Range(Range("B2"), Range("B2").End(xlDown).End(xlToRight)).Select
Selection.ClearContents
End Sub

Hat jemand eine Idee, woran das liegen könnte?
Schon einmal vielen Dank!
Anna

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ClearContents für mehrere Tabellenblätter LF 1004
18.08.2017 11:23:39
Piet
Hallo,
der Fehler ist sehr einfach, für Anfaenger aber vielleicht schser zu verstehen! - PCs können nicht denken!
Der Code so wie du ihn aufgebaut hast funktioniert nur wenn das Aktive Blatt mit dem Worksheet Namen übereinstimmt!
Der Grund ist hier zu finden... - Range("B2").End(xlDown)
Wenn vor Range("B2") keine Tabelle angegeben wird versteht Excel es so, das er die Endzelle im gerade -Aktiven Blatt- suchen soll. Das trifft aber nur auf eine Tabelle zu! Bei den anderen Tabellen kommt es zu einem Adressfehler!! Das Löschen funktioniert garnicht ober waere unkorrekt, mit einer falscher End-Adresse.
Abhilfe sind die von mir gemachte n Vorschlaege. Welchen du benutzt ist dabei egal!
Eine Zelle mit Select anspringen geht auch nur dann, wenn das AktiveSheet mit dem Worksheets.Namen übereinstimmt!!
Man beachte die Feinheiten bei Excel!!
mfg Piet
Sub testlöschen()
Dim CStrom As Worksheet, RStrom As Worksheet
Set CStrom = Worksheets("ComStrom")
Set RStrom = Worksheets("RestStrom")
'Lösung über Set Anweisung
CStrom.Range(Range("B2"), CStrom.Range("B2").End(xlDown).End(xlToRight)).ClearContents
'Lösung über Worksheet("ComStrom")
Worksheets("ComStrom").Range(Range("B2"), Worksheets("ComStrom").Range("B2").End(xlDown). _
End(xlToRight)).ClearContents
'Lösung über With Klammer)
With Worksheets("ComStrom")
.Range(.Range("B2"), .Range("B2").End(xlDown).End(xlToRight)).ClearContents
End With
'hier kommt unweigerlich Laufzeitfehler !!
'** wenn das Aktive Blatt  "RestStrom" ist !!
Worksheets("Reststrom").Range(Range("B2"), Range("B2").End(xlDown).End(xlToRight)). _
ClearContents
End Sub

Anzeige
AW: ClearContents für mehrere Tabellenblätter LF 1004
18.08.2017 13:02:28
Werner
Hallo Anna,
die Grundlagen hast du ja von Piet. Hier jetzt ein Code mit einer Schleife über die Blätter.
Public Sub Löschen()
For Each Worksheet In ThisWorkbook.Worksheets
Select Case Worksheet.Name
Case "ComStrom", "Reststrom", "ErlösComStrom", "Einspeisung"
With Worksheet
.Range(.Range("B2"), .Range("B2").End(xlDown).End(xlToRight)).ClearContents
End With
Case Else
End Select
Next
End Sub
Gruß Werner
ClearContents für mehrere Tabellenblätter LF 1004
18.08.2017 14:12:53
Anna
Hallo ihr beiden,
vielen Dank! Das klingt logisch. Ich dachte mir schon, dass es etwas damit zu tun hat, dass man sich im falschen Tabellenblatt befindet, aber dass man innerhalb einer Range, das Worksheet zweimal angeben muss, darauf bin ich nicht gekommen.
Vielen Dank! Jetzt funktioniert es.
Ein schönes Wochenende euch beiden
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2017 14:16:50
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige