Microsoft Excel

Herbers Excel/VBA-Archiv

Makro: Löschen bestimmter Sheets - Fehlermeldung?

Betrifft: Makro: Löschen bestimmter Sheets - Fehlermeldung? von: Monika
Geschrieben am: 21.10.2014 10:56:51

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

  

Betrifft: AW: Makro: Löschen bestimmter Sheets - Fehlermeld? von: Daniel
Geschrieben am: 21.10.2014 11:10:39

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


  

Betrifft: AW: Makro: Löschen bestimmter Sheets - Fehlermeldung? von: Peter
Geschrieben am: 21.10.2014 11:10:41

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



  

Betrifft: AW: Makro: Löschen bestimmter Sheets - Fehlermeldung? von: Monika
Geschrieben am: 21.10.2014 11:23:34

Danke für die schnelle Rückmeldung! :) Funktioniert!


 

Beiträge aus den Excel-Beispielen zum Thema "Makro: Löschen bestimmter Sheets - Fehlermeldung?"