Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro: Löschen bestimmter Sheets - Fehlermeldung?

Makro: Löschen bestimmter Sheets - Fehlermeldung?
21.10.2014 10:56:51
Monika
Hallo zusammen,
ich möchte ein neues Workbook anlegen, in welches per Makro verschiedene Dateien kopiert werden sollen. Dies läuft auch schon, nur habe ich ein kleines Problem entdeckt:
Wenn jedes Mal neu reinkopiert wird (was so sein soll, weil es sich immer um die aktuellen Daten handeln muss), dann habe ich irgendwann unheimlich oft redundante Sheets.
Deshalb möchte ich vor dem Einfügen prüfen, ob schon ein Sheet mit dem gleichen Namen vorhanden ist und falls ja, soll dieses gelöscht werden...
Ich habe angefangen etwas zu schreiben, kenne mich allerdings mit Schleifen, etc. leider nicht so gut aus, deshalb würde ich euch gerne um Unterstützung bitten :)
Momentan sieht das ganze so aus:
Sub BlaetterLoeschen()
Dim WS_Count As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
Dim WS As Worksheet
Application.DisplayAlerts = False
If WS.Name = "HP OrderStatus" Then
ActiveWorkbook.WS("HP OrderStatus").Delete
Application.DisplayAlerts = True
End If
Next I
End Sub
Hier bekomme ich allerdings den Fehler "Run-time error '91'_Object variable or With block variable not set". Ich habe mir die Hilfe angeschaut, bin aber eigentlich der Meinung, dass ich da schon ein Objekt habe? Bin etwas aufgeschmissen... :D
Wäre super, wenn ihr mir helfen könntet :)
Vielen Dank schon mal und liebe Grüße
Monika

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro: Löschen bestimmter Sheets - Fehlermeld?
21.10.2014 11:10:39
Daniel
Hi
da wirfst du einiges durcheinander.
wenn du ein bestimmtes Tabellenblatt löschen willst, dann kannst du entweder:
eine Zählscheife über die Indexnummer der Tabellenblätter verwenden:
dim i as long
for i = 1 to ActiveWorkbook.Worksheet.Count
if ActiveWorkbook.Worksheets(i).Name = "HP OrderStatus" then
ActiveWorkbook.Worksheets(i).Delete
exit for
end if
next
oder du nimmst eine For-Each-In-Schleife über die Worksheet-Objekte:
dim WS as Worksheet
for Each WS in ActiveWorkbook.Worksheets
if WS.Name = "HP OrderStatus" Then
WS.Delete
Exit For
end If
Next
die dritte Variante wäre, dass du das Blatt einfach löscht und die Fehlermeldung die dann entsteht, einfach ignorierst.
In diesem Fall kann man das machen, denn der Fehler entsteht ja dann wenn das Blatt nicht vorhanden ist, und dann kann man ohne Probleme mit dem nächsten Programmschritt weiter machen, weil das ja genau das ist was man erreichen will:
On Error Resume Next
ActiveWorkbook.Worksheets("HP OrderStatus").Delete
On Error Goto 0
Gruß Daniel
ps. das Application.DisplayAlerts = False/True kannst du ja selber ergänzen

Anzeige
AW: Makro: Löschen bestimmter Sheets - Fehlermeldung?
21.10.2014 11:10:41
Peter
Hallo

Sub BlaetterLoeschen()
Dim WS_Count As Integer
Dim WS As Worksheet
WS_Count = ActiveWorkbook.Worksheets.Count
For i = 1 To WS_Count
Set WS = ActiveWorkbook.Worksheets(i)
Application.DisplayAlerts = False
If WS.Name = "HP OrderStatus" Then
WS.Delete
End If
Application.DisplayAlerts = True
Set WS = Nothing
Next i
End Sub

Anzeige
AW: Makro: Löschen bestimmter Sheets - Fehlermeldung?
21.10.2014 11:23:34
Monika
Danke für die schnelle Rückmeldung! :) Funktioniert!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige