Makro für alle Tabellenblätter, außer XY
Schritt-für-Schritt-Anleitung
Um ein Excel Makro zu erstellen, das alle Tabellenblätter durchläuft und dabei bestimmte Blätter auslässt, kannst Du das folgende VBA-Skript verwenden. Dieses Beispiel zeigt, wie Du Spalten D bis H in allen Arbeitsblättern außer den angegebenen kopierst und durch Werte ersetzt.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke im Menü auf
Einfügen
und wähle Modul
.
- Kopiere den folgenden Code in das Modul:
Sub Werte_für_Tabellenblätter()
Dim i As Long
Dim j As Long
Dim arrTabellen
Dim bbearbeiten As Boolean
Application.ScreenUpdating = False
'Hier die Tabellen auflisten, die nicht bearbeitet werden sollen
arrTabellen = Array("Inhaltsverzeichnis", "Übersicht", "Fehlerausgabe")
'Alle Arbeitsblätter der Arbeitsmappe durchlaufen
For i = 1 To ThisWorkbook.Worksheets.Count
bbearbeiten = True
'Prüfen ob Tabelle zu den Ausnahmen gehört
For j = LBound(arrTabellen) To UBound(arrTabellen)
If ThisWorkbook.Worksheets(i).Name = arrTabellen(j) Then
bbearbeiten = False 'Marker auf Falsch setzen
Exit For
End If
Next j
'Nur Formeln in Werte umwandeln, wenn Marker auf Wahr ist
If bbearbeiten = True Then
With ThisWorkbook.Worksheets(i).Range("D:H")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
End If
Next i
Application.ScreenUpdating = True
End Sub
- Schließe den VBA-Editor.
- Um das Makro auszuführen, drücke
ALT + F8
, wähle Werte_für_Tabellenblätter
aus und klicke auf Ausführen
.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode, um alle Tabellenblätter zu durchlaufen, ist die Verwendung einer For Each
Schleife. Hier ein Beispiel:
Dim w As Worksheet
For Each w In ThisWorkbook.Worksheets
Select Case w.Name
Case "Inhaltsverzeichnis", "Übersicht", "Fehlerausgabe"
' Nichts tun
Case Else
With w.Range("D:H")
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
End Select
Next w
Diese Methode ist oft einfacher und übersichtlicher.
Praktische Beispiele
Hier sind einige Beispiele, wie das Makro in verschiedenen Szenarien angewendet werden kann:
-
Kopieren von Formeln in mehreren Arbeitsmappen:
Du kannst das Makro so anpassen, dass es auch für alle Arbeitsmappen gilt.
-
Anpassung für spezifische Spalten:
Ändere Range("D:H")
in eine andere Spaltenbezeichnung, um verschiedene Datenbereiche zu bearbeiten.
Tipps für Profis
-
Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass das Makro auch bei unerwarteten Bedingungen stabil bleibt.
-
Optimierung: Deaktiviere Bildschirmaktualisierung (Application.ScreenUpdating = False
) und setze sie danach wieder auf True
, um die Ausführungsgeschwindigkeit zu erhöhen.
-
Dokumentation: Kommentiere Deinen Code gut, damit Du Dich später leichter daran erinnern kannst, was jeder Teil des Codes bewirken soll.
FAQ: Häufige Fragen
1. Wie kann ich das Makro für alle Arbeitsmappen nutzen?
Du kannst das Makro anpassen, indem Du eine Schleife über alle offenen Arbeitsmappen hinzufügst und ActiveWorkbook
verwendest.
2. Funktioniert das Makro auch in Excel 365?
Ja, das Makro ist mit Excel 365 sowie älteren Versionen kompatibel, solange VBA unterstützt wird.
3. Was, wenn ich mehr als drei Tabellenblätter ausschließen möchte?
Du kannst einfach weitere Namen in das Array arrTabellen
hinzufügen, z.B. arrTabellen = Array("Tabelle1", "Tabelle2", "Tabelle3", "Inhaltsverzeichnis")
.