Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro für alle Tabellenblätter, außer XY

Forumthread: Makro für alle Tabellenblätter, außer XY

Makro für alle Tabellenblätter, außer XY
29.10.2018 16:38:42
Thomas
Guten Tag liebe Herber Gemeinde,
ich hänge mal wieder fest. Ich habe genau den Code gefunden den ich für mein Projekt brauche, dachte ich zumindest. Das Makro soll in allen Tabellenblätter außer den namentlich angegeben die Spalten D-H kopieren und durch Werte ersetzten.
Der Code liesst sich aus meiner Warte aus so als sei er korrekt,tut aber gar nichts wenn ich Ihn starte.
Sub Werte_für_Tabellenblätter()
Dim i As Long
Dim j As Long
Dim arrTabellen
Dim bbearbeiten As Boolean
Application.ScreenUpdating = False
'hier werden die Tabellen aufgelistet, 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   'falls ja, dann 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

Ich möchte an dieser Stelle auch noch mal dem Autor des Codes Danken, da ich Ihn auch kopiert und dann für meine Zwecke adaptiert habe, Danke M.O.
Freue mich auf euren Support und schon mal Danke im voraus
Schönen Gruß
Thomas
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für alle Tabellenblätter, außer XY
29.10.2018 16:42:37
Hajo_Zi
Hallo Thomas,
    For i = 1 To ThisWorkbook.Worksheets.Count
If Worksheets(i).Name  "Tabele23" Then
'witerer Code
End If
Next i


Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Makro für alle Tabellenblätter, außer XY
29.10.2018 16:48:41
Zacharias
Hallo Thomas ich würd's so machen:
dim w as worksheet
For each w in thisworkbook.worksheets
Select case w.name
Case "Inhaltsverzeichnis", "Übersicht", "Fehlerausgabe"
Case else
With.Range("D:H")
.Copy
.PasteSpecial …
End with
End select
Next w

Gruß
Zacharias
Anzeige
Der Code macht, was du von ihm erwartest
29.10.2018 16:52:01
ihm
Der Code ist korrekt und macht was er soll.
ich würde ihn aber etwas einfacher schrieben:
dim ws as Worksheet
for each ws in thisworkbook.Worksheets
select Case ws.name
Case Inhaltsverzeichnis", "Übersicht", "Fehlerausgabe"
Case Else
With ws.Range("D:H")
.Copy
.PasteSpecial xlpastevalues
end with
end Select
next
Gruß Daniel
Anzeige
AW: Der Code macht, was du von ihm erwartest
29.10.2018 17:23:23
ihm
Erst einmal vielen Dank, es funktioniert.
Allerdings leider nur wenn ich das Makro in die jeweilige Datei einbaue.
Gerne würde ich das Ganze in die Personal XLS einbauen, damit diese für jede Datei nutzbar ist.
Leider funktioniert das Makro dort nicht, ich nehme an müsste erst die Aktive Arbeitsmappe anwählen, ist dies korrekt und wenn ja wie sette ich das um?
Anzeige
AW: Der Code macht, was du von ihm erwartest
29.10.2018 17:35:35
ihm
Hi
"ActiveWorkbook" statt "ThisWorkbook"
rudimentäre Englischkenntnisse sind beim Programmieren durchaus hilfreich ;-)
Gruß Daniel
AW: Der Code macht, was du von ihm erwartest
29.10.2018 17:46:37
ihm
Danke Danke Danke!
Und ich geh mich jetzt ne Runde schämen ;)
Oh man manchmal ist nach nem langen Tag vor vielen Tabellen echt der größte Baum im wald nicht meh sichtbar.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

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.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke im Menü auf Einfügen und wähle Modul.
  3. 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
  1. Schließe den VBA-Editor.
  2. 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

  • Fehler: Das Makro tut nichts.

    • Lösung: Überprüfe, ob die Namen der Tabellenblätter in arrTabellen korrekt geschrieben sind.
  • Fehler: Makro funktioniert nur in der aktuellen Arbeitsmappe.

    • Lösung: Verwende ActiveWorkbook anstelle von ThisWorkbook, wenn Du das Makro in der Personal.xlsb speichern möchtest.

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:

  1. Kopieren von Formeln in mehreren Arbeitsmappen: Du kannst das Makro so anpassen, dass es auch für alle Arbeitsmappen gilt.

  2. 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").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige