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

Code für alle Mappen anwenden

Code für alle Mappen anwenden
20.08.2013 13:57:40
MBie
Hallo liebe Community!
Ich habe folgendes Problem:
Ich habe mir einen Code aus diversen Beiträgen, dem Makrorekorder und ein bisschen Glück zusammengestellt. Er funktioniert wunderbar, jedoch sollte er nicht nur auf eine Tabelle, sondern auf insgesamt sechs Tabellen angewandt werden. Der Code sieht wie folgt aus:
Code:
*****************************************************************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Tabelle1.Unprotect Password:="123"
If Tabelle1.FilterMode Then Tabelle1.ShowAllData
Tabelle1.Range("A1").AutoFilter field:=1, _
Criteria1:=Array("A", "F", "V", "E", "B"), Operator:=xlFilterValues
Tabelle1.AutoFilter.Sort.SortFields.Clear
Tabelle1.AutoFilter.Sort.SortFields.Add Key:=Range( _
"E1:E538"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With Tabelle1.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Dim WS As Worksheet
For Each WS In ThisWorkbook.Sheets
If Not WS.ProtectContents Then
WS.Protect DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
AllowFiltering:=True, _
Password:="123"
End If
Next
End Sub
*****************************************************************************
Kurze Erklärung zum Code:
Schritt 1: Passwortschutz aufheben
Schritt 2: Filter löschen
Schritt 3: Filter setzen
Schritt 4: Aufsteigend sortieren
Schritt 5: Passwort setzen
Schritt 6: Arbeitsmappe wird geschlossen
Problem:
Wie im Code zu sehen ist, wird der Code nur bei der Tabelle 1 ausgeführt. Das Problem ist jedoch, dass ich insgesamt sechs identische Tabellen besitze. Es ist zwar möglich, dass ich den Code 6 mal kopiere und für jede Tabelle einfüge, jedoch ist dies eine ziemlich unsaubere Lösung und das Schließen selbst dauert auch lange.
Nun zu meiner Frage:
Kann man dies auch mittels einer Schleife wie beim Passwort setzen bewältigen, oder gibt es noch eine andere Lösung?
Vielen Dank im Voraus!!
Mit freundlichen Grüßen
MBie

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code für alle Mappen anwenden
20.08.2013 14:06:32
JACKD
Hallo MBie
nicht getestet und nicht optimiert

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each WS In ThisWorkbook.Sheets
WS.Unprotect Password:="123"
If WS.FilterMode Then WS.ShowAllData
WS.Range("A1").AutoFilter field:=1, _
Criteria1:=Array("A", "F", "V", "E", "B"), Operator:=xlFilterValues
WS.AutoFilter.Sort.SortFields.Clear
WS.AutoFilter.Sort.SortFields.Add Key:=Range( _
"E1:E538"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With WS.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
If Not WS.ProtectContents Then
WS.Protect DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
AllowFiltering:=True, _
Password:="123"
End If
Next
End Sub
Grüße

Anzeige
AW: Code für alle Mappen anwenden
20.08.2013 14:18:55
MBie
Hallo Jackd!
Vielen Dank für die superschnelle Antwort!
Der Code funktioniert spitze! Er durchläuft alle Arbeitsmappen, filtert, sortiert und legt das Passwort fest. Es gibt nur ein Problem:
Ganz zum Schluss, bevor quasi das Dialogfenster zum Schließen kommt, scheint ein Fehler auf:
"Laufzeitfehler: 1004"
Der Sortierbezug ist ungültig. Überprüfen Sie, ob sich der Sortierbezug innerhalb der markierten Daten befindet und ob das Feld "Sortieren nach" nicht den gleichen Bezug enthält oder leer ist.
Im Code selbst zeigt er mir bei der Stelle .Apply den Fehler an.

Anzeige
AW: Code für alle Mappen anwenden
20.08.2013 15:16:04
MBie
PS.: Den Code, damit es aufsteigend sortiert habe ich mittels den Makrorekorder gemacht.
(Sorry hab die Edit-Funktion nicht gefunden)

AW: Code für alle Mappen anwenden
21.08.2013 08:32:49
fcs
Hallo MBie,
im zu sortierenden Bereich müssen für das Sortieren mindestens 2 Zeilen mit Daten vorhanden sein, sonst tritt ein Fehler auf.
Du müsstets also vor dem Sortieren die Anzahl der Zeilen prüfen und das Sortieren ggf. überspringen.
Gruß
Franz

AW: Code für alle Mappen anwenden
21.08.2013 09:02:29
MBie
Hallo fcs,
Vielen Dank für deinen Tipp. Jedoch sind sogar ca. 500 Zeilen in jedem Arbeitsblatt vorhanden. Außerdem funktioniert auch alles, er sortiert und filtert es, nur kommt diese komische Fehlermeldung.
Kann es an etwas anderem liegen bzw. am Code?
LG MBie

Anzeige
AW: Code für alle Mappen anwenden
21.08.2013 09:24:11
MBie
Hallo fcs,
Vielen Dank für deinen Tipp. Jedoch sind sogar ca. 500 Zeilen in jedem Arbeitsblatt vorhanden. Außerdem funktioniert auch alles, er sortiert und filtert es, nur kommt diese komische Fehlermeldung.
Kann es an etwas anderem liegen bzw. am Code?
LG MBie

Danke.
21.08.2013 12:12:29
MBie
Hat sich erledigt. Danke.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige