Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro auf gesamtes Arbeitsblatt anwenden

Forumthread: Makro auf gesamtes Arbeitsblatt anwenden

Makro auf gesamtes Arbeitsblatt anwenden
12.11.2016 16:36:57
Ibie
Hallo zusammen,
ich habe 5 Excel Tabellen mit jeweils 93 Registerblättern. In diesen Blättern sind die Überschriften und Formeln blattgeschützt, und die Eingabefelder haben keinen Schutz. Nun möchte ich in allen Blättern alle ungeschützten Inhalte löschen.
Da es eine Heidenarbeit wäre, dies in 93 Blättern * 5 Dateien manuell zu machen, habe ich nach einer Makro gesucht und bin eigentlich auch fündig geworden.
Problem ist nur, dass diese Makro nur auf ein ausgewähltes Blatt angewendet wird und nicht auf die gesamte Arbeitsmappe.
Sub wegmit()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Sheets("Tabelle1").Range("A1:AA50")
For Each Zelle In Bereich
If Zelle.Locked = False Or Zelle.MergeArea.Locked = False Then Zelle.MergeArea.ClearContents
Next Zelle
End Sub
Bei "Set Bereich" solte also die gesamte Arbeitsmappe angegeben sein, nehme ich mal an. Wie mach ich das?
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro auf gesamtes Arbeitsblatt anwenden
12.11.2016 16:40:39
Hajo_Zi

Option Explicit
Sub wegmit()
Dim Zelle As Range
Dim WsTabelle As Worksheet
For Each WsTabelle In Worksheets
For Each Zelle In WsTabelle.Range("A1:AA50")
If Zelle.Locked = False Or Zelle.MergeArea.Locked = False Then Zelle.MergeArea. _
ClearContents
Next Zelle
Next WsTabelle
End Sub

Anzeige
AW: Makro auf gesamtes Arbeitsblatt anwenden
12.11.2016 17:03:53
Ibie
Funktioniert super danke
AW: Makro auf gesamtes Arbeitsblatt anwenden
12.11.2016 16:50:18
Bastian
Oder So
Gruß Basti
Sub UseFileDialogOpen()
Dim Bereich As Range
Dim Zelle As Range
Dim lngCount As Long
Dim AWB As Workbook
Dim WS As Worksheet
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount = 1 To .SelectedItems.Count
Workbooks.Open .SelectedItems(lngCount)
Set AWB = ActiveWorkbook
For Each WS In AWB.Worksheets
Set Bereich = WS.Range("A1:AA50")
For Each Zelle In Bereich
If Zelle.Locked = False Or Zelle.MergeArea.Locked = False Then Zelle.MergeArea. _
ClearContents
Next Zelle
Next
AWB.Close True
Next lngCount
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makro auf das gesamte Excel-Arbeitsblatt anwenden


Schritt-für-Schritt-Anleitung

Um ein Makro auf ein gesamtes Arbeitsblatt in Excel anzuwenden, befolge diese Schritte:

  1. Öffne die Excel-Datei, in der du das Makro anwenden möchtest.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf "VBAProject (deine Datei)".
    • Wähle Einfügen > Modul.
  4. Kopiere und füge den folgenden VBA-Code in das Modul ein:

    Option Explicit
    Sub wegmit()
       Dim Zelle As Range
       Dim WsTabelle As Worksheet
       For Each WsTabelle In Worksheets
           For Each Zelle In WsTabelle.Range("A1:AA50")
               If Zelle.Locked = False Or Zelle.MergeArea.Locked = False Then
                   Zelle.MergeArea.ClearContents
               End If
           Next Zelle
       Next WsTabelle
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle wegmit und klicke auf Ausführen.

Das Makro wird nun alle ungeschützten Inhalte auf allen Blättern des Arbeitsblatts löschen.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Lösung: Stelle sicher, dass alle Arbeitsblätter tatsächlich vorhanden sind und dass der Range korrekt definiert ist.
  • Fehler: Makro funktioniert nur auf einem Blatt

    • Lösung: Überprüfe, ob du die Schleife über Worksheets korrekt implementiert hast, wie im Beispiel gezeigt.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du das Löschen ungeschützter Inhalte auch manuell durchführen:

  1. Wähle das entsprechende Arbeitsblatt aus.
  2. Markiere den Bereich (z.B. A1:AA50).
  3. Drücke Entf, um den Inhalt zu löschen, aber achte darauf, dass du nur die ungeschützten Zellen auswählst.

Eine andere Möglichkeit ist die Nutzung von Excel-Formeln oder Filterfunktionen, um gezielt nur die gewünschten Zellen zu bearbeiten.


Praktische Beispiele

Hier ist ein Beispiel für die Anwendung des Makros auf mehrere Excel-Dateien:

Sub UseFileDialogOpen()
    Dim Bereich As Range
    Dim Zelle As Range
    Dim lngCount As Long
    Dim AWB As Workbook
    Dim WS As Worksheet
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show
        For lngCount = 1 To .SelectedItems.Count
            Workbooks.Open .SelectedItems(lngCount)
            Set AWB = ActiveWorkbook
            For Each WS In AWB.Worksheets
                Set Bereich = WS.Range("A1:AA50")
                For Each Zelle In Bereich
                    If Zelle.Locked = False Or Zelle.MergeArea.Locked = False Then
                        Zelle.MergeArea.ClearContents
                    End If
                Next Zelle
            Next
            AWB.Close True
        Next lngCount
    End With
End Sub

Dieses Makro öffnet mehrere Excel-Dateien und wendet das Löschen auf alle Arbeitsblätter an.


Tipps für Profis

  • Teste das Makro zuerst an einer Kopie deiner Excel-Datei, um Datenverlust zu vermeiden.
  • Verwende die Option Explicit-Anweisung am Anfang deines Codes. Dies hilft, Fehler in der Variablen-Deklaration zu erkennen.
  • Speichere deine Arbeitsmappe im .xlsm-Format, um die Makros zu speichern und auszuführen.

FAQ: Häufige Fragen

1. Wo finde ich den VBA-Editor?
Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

2. Kann ich das Makro auf spezifische Zellen anwenden?
Ja, ändere einfach die Range im Makro von Range("A1:AA50") auf den gewünschten Bereich.

3. Ist es möglich, das Makro zu automatisieren?
Ja, du kannst das Makro in einem bestimmten Intervall automatisch ausführen lassen, indem du einen Timer im VBA einrichtest.

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