Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Werkzeug
BildScreenshot zu Werkzeug Werkzeug-Seite mit Beispielarbeitsmappe aufrufen

Löschen von Worksheets zwecks Initialisierung

Betrifft: Löschen von Worksheets zwecks Initialisierung von: Eddie Felson
Geschrieben am: 18.08.2008 12:31:09

Hallo,
häufig besteht der Bedarf, ein Worksheet vor Programmstart, bis auf die überschriften zu löschen. Grundsätzliche Bedingung ist - kein Select des Sheets darf nötig sein.
Ich benutze hierfür:

Sheets(ARBEITSBLATT).Range(loeschbereich).ClearContents



Leider hat diese Methode einen riesen Nachteil, denn wenn jemand einen Auto-Filter nachträglich einbaut und eine Selektion stehen lässt, werden alle nicht selektierten nicht gelöscht!

Ein sequentielles löschen jeder Zeile, würde die Lösung bringen, jedoch ist das viel zu langsam.

- a) Gibt es anstatt .ClearContents ein Werkzeug das auch die verdeckten Zeilen löscht?
- b) Notlösung: Eine Funktion, die abfragt ob ein Autofilter vorhanden ist, und ihn auf alles Anzeigen schaltet
- c) oder zur variante b) wenn er ihn nicht auf alles Anzeigen schalten kann, dann eben den Auto-Filter ganz raus werfen.

Gruß Eddie

  

Betrifft: AW: Löschen von Worksheets zwecks Initialisierung von: Rudi Maintaire
Geschrieben am: 18.08.2008 12:43:24

Hallo,
zu b)
If Sheets(ARBEITSBLATT).FilterMode Then Sheets(ARBEITSBLATT).ShowAllData

Gruß
Rudi


  

Betrifft: AW: Löschen von Worksheets zwecks Initialisierung von: Franc
Geschrieben am: 18.08.2008 12:44:47

das natürlich noch besser ^^


  

Betrifft: AW: Löschen von Worksheets zwecks Initialisierung von: Eddie Felson
Geschrieben am: 18.08.2008 13:19:30

Hallo,

ich sage schon mal danke an Alle. Diese Variante von Rudi, scheint mir das Optimum im meinem Fall zu sein.

Gruß Eddie


  

Betrifft: AW: Löschen von Worksheets zwecks Initialisierung von: Franc
Geschrieben am: 18.08.2008 12:44:02

Wenn ein Filter an ist, löscht er die Filter und setzt ihn neu was automatisch alle voreinstellungen wegnimmt. (Range für die Spalten entsprechend anpassen)

If Sheets(ARBEITSBLATT).AutoFilterMode Then Range("A1").AutoFilter
Range("A1:B1").AutoFilter


  

Betrifft: AW: Löschen von Worksheets zwecks Initialisierung von: mpb
Geschrieben am: 18.08.2008 12:47:12

Hallo Eddie,

angenommen, die Spaltenüberschriften stehen in A1:B1 und der Löschbereich ist A2:B7, beides in Tabelle1:

Sub Loeschen()
Set loeschbereich = Worksheets("Tabelle1").Range("A2:B7")
If Range("A1").AutoFilter = True Then
    Range("A1").AutoFilter
End If
loeschbereich.ClearContents
End Sub



Gruß
Martin