1.6k Aufrufe
Gefragt in Tabellenkalkulation von
Guten Tag,

ich versuche gerade in Excel alle Tabellen gleich zu formatieren. Habe in Google ein paar Möglichkeiten gefunden - wenn ich allerdings dann das Makro ausführe, wird dieses nur auf das aktive Blatt ausgeführt. Ich dachte eigentlich, dass die Schleifen die einzelnen Tabellen markieren.
FIndet jemand den Fehler? Danke im voraus.

Im folgenden die Versuche:

Sub Test()
Dim WS_COUNT As Integer
Dim I As Integer

WS_COUNT = ActiveWorkbook.Worksheets.Count

For I = 1 To WS_COUNT

With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.AutoFilterDateGrouping = False
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayOutline = False
.DisplayZeros = False
End With
Application.DisplayFullScreen = True

Next I

End Sub

Sub Test2()
Dim Current As Worksheet
For Each Current In Worksheets
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.AutoFilterDateGrouping = False
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayOutline = False
.DisplayZeros = False
End With
Application.DisplayFullScreen = True
Next
End Sub

Sub Test3()
ReDim Matrixvariable(1 To Sheets.Count)

For Each Blattname In Sheets
Blattzähler = Blattzähler + 1
Matrixvariable(Blattzähler) = Blattname.Name
Next

For y = 1 To Blattzähler
Sheets(Matrixvariable()).Select
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.AutoFilterDateGrouping = False
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayOutline = False
.DisplayZeros = False
End With
Application.DisplayFullScreen = True
Next
End Sub

Sub Test4()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.AutoFilterDateGrouping = False
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayOutline = False
.DisplayZeros = False
End With
Application.DisplayFullScreen = True
Next wks
End Sub

8 Antworten

0 Punkte
Beantwortet von
Hallo cm3t.

Ist das eine Fleißaufgabe?

In Sub Test liegt der Fehler darin, dass die einzelnen Sheets zu Beginn der Schleife nicht aktiviert werden. Stattdessen wird das ActiveWindow z.B. 12 mal auf die gleiche Weise formatiert ohne den Fokus zu verschieben. Richtig wäre z.B.:
For I = 1 To WS_COUNT
Worksheets(I).Select
With ActiveWindow
...
In Sub 2 werden zwar zumindest die einzelnen Sheets durchlaufen. Jedoch wird auch hier immer auf das zu Beginn sichtbare Fenster verwiesen. Richtig wäre:
For Each Current In Worksheets
Current.Select
With ActiveWindow
...
Sub 3 würde fast funktionieren wenn bei Sheets(Matrixvariable()).Select ein Zähler zwischen den Klammern stehen würde.

So langsam bekomme ich den Eindruck, ich mache hier deine Hausaufgaben. Daher breche ich an dieser Stelle ab.

Mr. K.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein Beispiel :-)

gruss nighty

Sub FormOn()
ActiveWindow.DisplayHorizontalScrollBar = True
End Sub

Sub FormOff()
ActiveWindow.DisplayHorizontalScrollBar = False
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

mit

activewindow

wird die Mappe angesprochen

somit auch alle worksheets

gruss nighty
0 Punkte
Beantwortet von
Hi nighty,

das stimmt schon. Du kannst aber auch über Fenster --> neues Fenster ein zweites Window aufmachen und dort ein anderes Worksheet auswählen. Dann ist ActiveWindow das Fenster in dem du gerade arbeitest.

Davon abgesehen ging es in der Frage darum, dass alle Tabellenblätter gleich formatiert werden sollten. Und Eigenschaften wie z.B. DisplayGridLines beziehen sich nur auf ein bestimmtes Worksheet bzw. Window. Warum diese Eigenschaft aber nicht auch im Sheet -Objekt hinterlegt ist, weiß ich auch nicht.

Mr. K.
0 Punkte
Beantwortet von
Hi All,

eine Alternative wäre z.B.
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
Sheets("Tabelle3").Activate
ActiveWindow.DisplayGridlines = False


Mr. k.
0 Punkte
Beantwortet von
Sub 3 sollte damit eigentlich funktionieren, wenn du bei einer älteren Excel-Version die Eigenschaft AutofilterDateGrouping rausnimmst. Allerdings wird auch hier kein Durchlauf gemacht sondern aufgrund des Arrays alle Blätter auf einen Schlag angepasst. Willst du per Durchlauf jedes Blatt einzeln anpassen (u. U. mithilfe von If-Bedingungen kommst du um die o.g. Beispiele nicht herum
0 Punkte
Beantwortet von
Guten Morgen und danke für die Antworten - werde das nachher gleich nochmal ausprobieren.

Und nein - das sind nicht meine Hausaufgaben, eher ein Exkurs für mich.

lg cm3t
0 Punkte
Beantwortet von
Hallo, cm3t und alle!
Ihr werdet mich vermutlich auslachen, wenn ich excelbaby mich in Eure Fachdiskussion einmische, aber manchmal kann eine dumme Antwort wie ein Katalysator wirken, dass anderen die zündende Idee einfällt ...

(ich arbeite mit excel 2010)

wenn ich in der Frage von Dir lese "ich versuche gerade in Excel alle Tabellen gleich zu formatieren", dann denke ich naiv "wo ist das Problem?"

ich selber war beim Formatieren noch nicht auf Makros angewiesen, hab' jetzt aber schnell mal einfache Minimakros mit verschiedenen Formatierungsaufträgen gebaut - ein eigenes Makro, um alle Tabellen einer Arbeitsmappe zu treffen, brauche ich aber nie:

alle Tabellen markieren (Strg + click auf die jeweiligen tabs), und dann kann's losgehen; - klar, das läuft dann alles gleichzeitig in allen Tabellen - die individuellen Bearbeitungen, Anpassungen etc. für die einzelnen Tabellen muss ich dann natürlich Tabelle um Tabelle durchführen - darauf bezieht sich vermutlich Antwort 6 - ?

und nun tschüs für heute - schönen Sonntag allseits!
frohe Grüße, witzling
...