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

Forumthread: makro auf mehrere Tabellenblätter anwenden

makro auf mehrere Tabellenblätter anwenden
25.05.2004 14:44:21
mika
Hallo Forum,
ich möchte folgendes Makro auf mehrere Tabellenblätter anwenden, in denen die Spalten nach gleichem Kriterium ausgeblendet werden sollen.
Wie funktioniert das?
Gruß,
mika
For i = 1 To 50
If Cells(1, 1) "" Then
If Cells(1, i) Range("a1") Then
Columns(i).EntireColumn.Hidden = True
End If
End If
Next i
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: makro auf mehrere Tabellenblätter anwenden
25.05.2004 15:17:00
JensD
Hi
Einfach das Makro in ein Modul Kopieren (Einfügen/Modul) und die jeweilige Tabelle auswählen und das Makro starten.
Gruß Jens
AW: nein - das eine soll in mehreren Tabellenblät
25.05.2004 15:38:56
mika
..blättern ausgeführt werden
Ich habe 5 Blätter, auf denen immer die Spalte mit dem gleichen Kriterium, z.b. Mai sichtbar ist und alle anderen ausgeblendet werden.
Auf dem 1. Blatt möchte ich das Makro starten und es soll auf allen 5 Blättern ausblenden.
Wie muß ich die Blätter ansprechen?
Gruß,
mika
Anzeige
AW: nein - das eine soll in mehreren Tabellenblät
25.05.2004 16:23:56
JensD
Dann ebend Automatisch ... in den ersten 5 Blättern von Links.

Sub Ausblenden()
For a = 1 To 5
With Worksheets(a)
For i = 1 To 50
If .Cells(1, 1) <> "" And .Cells(1, i) <> .Range("a1") Then .Columns(i).EntireColumn.Hidden = True
Next i
End With
Next a
End Sub

Anzeige
AW: makro auf mehrere Tabellenblätter anwenden
25.05.2004 15:31:02
Sven
Hallo mika,
etwa so:

Sub ausblenden()
Dim i As Integer
Dim j As Worksheet
For Each j In ActiveWorkbook.Sheets
For i = 1 To 50
If j.Cells(1, 1) <> "" Then
If j.Cells(1, i) <> j.Range("a1") Then
j.Columns(i).EntireColumn.Hidden = True
End If
End If
Next i
Next j
End Sub

Gruß, Sven.
Anzeige
danke, sven, aber ...
mika
... es soll nur für die ersten 5 sheets von mehr gelten.
Wie schränke ich das ein?
Gruß,
mika
AW: danke, sven, aber ...
25.05.2004 16:18:37
Sven
Hi mika, im einfachsten Fall so (nicht sehr schön programmiert aber es klappt):

Sub ausblenden()
ActiveWorkbook.Sheets(1).Activate
Call ausblenden2
ActiveWorkbook.Sheets(2).Activate
Call ausblenden2
ActiveWorkbook.Sheets(3).Activate
Call ausblenden2
ActiveWorkbook.Sheets(4).Activate
Call ausblenden2
ActiveWorkbook.Sheets(5).Activate
Call ausblenden2
End Sub


Sub ausblenden2()
Dim i As Integer
For i = 1 To 50
If Cells(1, 1) <> "" Then
If Cells(1, i) <> Range("a1") Then
Columns(i).EntireColumn.Hidden = True
End If
End If
Next i
End Sub

Anzeige
AW: danke, sven, aber ...
25.05.2004 16:22:47
Sven
Geht doch, so ist's schöner :-)

Sub ausblenden()
Dim a As Integer
For a = 1 To 5
ActiveWorkbook.Sheets(a).Activate
Call ausblenden2
Next a
End Sub


Sub ausblenden2()
Dim i As Integer
For i = 1 To 50
If Cells(1, 1) <> "" Then
If Cells(1, i) <> Range("a1") Then
Columns(i).EntireColumn.Hidden = True
End If
End If
Next i
End Sub

Anzeige
funzt, aber jetzt gibt es noch ein problem
25.05.2004 17:28:21
mika
...meine sheets sind zwar in meiner arbeitsmappe die ersten 5, aber wie ich jetzt erst bemerkt habe, in der VBA-Struktur nicht Tabelle 1-5, sondern kreuz u. quer. Kann ich die Tabellen im VBA Ordner umstrukturieren und benennen?
Gruß,
Mika
Desweiteren habe ich noch zwei Fragen:
1.Kann die Auswahl erweitern, z.b. durch sowas wie range("a1") or Range("a2")
genauso funzt es nicht, das habe ich versucht
2. wie definiere ich den druckbereich für die erzielte auswahl?
PS: Vielen, vielen Dank für deine Hilfe!!!!
Anzeige
AW: funzt, aber jetzt gibt es noch ein problem
25.05.2004 18:07:27
Sven
Hi mika,
so kriegst Du die Reihenfolge z.B. wieder hin:

Sub blattIndexAendern()
ActiveWorkbook.Sheets(1).name = "Tabelle 2"
ActiveWorkbook.Sheets(2).name = "Tabelle 3"
ActiveWorkbook.Sheets(3).name = "Tabelle 1"
End Sub

Bezüglich der anderen Sachen muss ich Dich auf morgen vertrösten.
Gruß, Sven.
Anzeige
AW: funzt, aber jetzt gibt es noch ein problem
25.05.2004 18:52:36
JensD
Hi
Die For a = 1 to 5 spricht die Tabellen von Links nach Rechts an.
Also immer die ersten 5 Tabellen von Links gesehen, es spielt keine Rolle ob du die Tabellen verschiebst. Wenn du z.B. Tabelle1 und 2 vertauschst dann ist Tabelle2 jetzt die Nr.1.

Sub Ausblenden()
For a = 1 To 5
With Worksheets(a)
For i = 1 To 50
If .Cells(1, 1) <> "" then
If .Cells(1, i) <> .Range("a1") or .Cells(1, i) <> .Range("a2")  Then
.Columns(i).EntireColumn.Hidden = True
End IF
End If
Next i
.PageSetup.PrintArea = "$A$1:$C$50"
End With
Next a
End Sub

Gruß JEns
Anzeige
AW: jetzt klappts prima bis auf OR
26.05.2004 09:49:37
Mika
Wenn ich die Anweisung folgendermaßen mit or verknüpfe
If .Cells(1, i) Worksheets("GuV 1").Range("a1")
OR .Cells(1, i) Worksheets("GuV 1").Range("a2") Then
wird keines der Kriterien akzeptiert.
Wo ist der Fehler? Nur Syntax oder Logik?
Vielen Dank für eure Hilfe Sven und JensD
Gruß,
Mika
Anzeige
AW: jetzt klappts prima bis auf OR
26.05.2004 13:02:24
JensD
Hi
Kann eigendlich nur ein Logigfehler sein.
If .Cells(1, i) Worksheets("GuV 1").Range("a1") OR .Cells(1, i) Worksheets("GuV 1").Range("a2") Then
Wenn Celle ist ungleich A1 oder Cells ist ungleich A2 dann
Das Ausblendten sollte erfolgen wenn der Inhalt der Zell weder mit A1 noch mit A2 übereinstimmt.
Gruß Jens
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro auf mehrere Tabellenblätter anwenden


Schritt-für-Schritt-Anleitung

Um ein Makro auf mehrere Tabellenblätter in Excel anzuwenden, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Makro erstellen: Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu starten.

  2. Neues Modul hinzufügen: Klicke im Projekt-Explorer mit der rechten Maustaste auf den Namen deiner Arbeitsmappe. Wähle „Einfügen“ und dann „Modul“.

  3. VBA-Code einfügen: Füge den folgenden VBA-Code in das Modul ein:

    Sub Ausblenden()
       Dim a As Integer
       For a = 1 To 5
           ActiveWorkbook.Sheets(a).Activate
           Call Ausblenden2
       Next a
    End Sub
    
    Sub Ausblenden2()
       Dim i As Integer
       For i = 1 To 50
           If Cells(1, 1) <> "" Then
               If Cells(1, i) <> Range("A1") Then
                   Columns(i).EntireColumn.Hidden = True
               End If
           End If
       Next i
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und kehre zur Excel-Oberfläche zurück. Drücke ALT + F8, wähle das Makro „Ausblenden“ aus und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: „Objekt erforderlich“ oder „Index außerhalb des Bereichs“.

    • Lösung: Stelle sicher, dass die Tabellenblätter existieren und dass die Indizes korrekt sind. Wenn deine Blätter umbenannt oder verschoben wurden, kann dies zu Problemen führen.
  • Fehler: Bestimmte Spalten werden nicht ausgeblendet.

    • Lösung: Überprüfe, ob die Bedingungen im If-Statement korrekt sind. Achte darauf, dass die Zellen, die du vergleichst, den richtigen Inhalt haben.

Alternative Methoden

Falls du eine flexiblere Methode bevorzugst, kannst du auch For Each verwenden, um durch alle Blätter zu iterieren:

Sub Ausblenden()
    Dim j As Worksheet
    For Each j In ActiveWorkbook.Sheets
        If j.Index <= 5 Then
            For i = 1 To 50
                If j.Cells(1, 1) <> "" Then
                    If j.Cells(1, i) <> j.Range("A1") Then
                        j.Columns(i).EntireColumn.Hidden = True
                    End If
                End If
            Next i
        End If
    Next j
End Sub

Praktische Beispiele

Hier sind einige nützliche Beispiele:

  • Beispiel 1: Um mehrere Bedingungen zu prüfen, kannst du den folgenden Code verwenden:

    If .Cells(1, i) <> Worksheets("GuV 1").Range("A1") And _
      .Cells(1, i) <> Worksheets("GuV 1").Range("A2") Then
       .Columns(i).EntireColumn.Hidden = True
    End If
  • Beispiel 2: Um den Druckbereich für die aktive Auswahl festzulegen:

    .PageSetup.PrintArea = "$A$1:$C$50"

Tipps für Profis

  • Verwende Variablen: Nutze Variablen, um die Lesbarkeit deines Codes zu verbessern und Fehler zu vermeiden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme zu vermeiden. Zum Beispiel:

    On Error Resume Next
  • Optimierung: Deaktiviere Bildschirmaktualisierungen während der Ausführung des Makros, um die Performance zu verbessern:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Tabellenblätter anpassen, die das Makro anspricht? Du kannst die Schleife im Makro anpassen, indem du den Wert in For a = 1 To 5 änderst.

2. Kann ich das Makro auf spezifische Tabellen anwenden? Ja, du kannst die Blätter nach Namen ansprechen, z. B. Worksheets("Tabellenname").Activate.

3. Wie kann ich den Druckbereich für die ausgeblendeten Spalten anpassen? Du kannst den Druckbereich mit PageSetup.PrintArea festlegen und den gewünschten Bereich angeben.

4. Was mache ich, wenn ich die Tabellen in der VBA-Struktur umbenennen möchte? Du kannst dies direkt im VBA-Editor tun, indem du den Namen der Arbeitsblätter änderst.

5. Wie kann ich mehrere Zellen in einer Bedingung abfragen? Verwende das Or-Schlüsselwort, um mehrere Bedingungen zu verknüpfen, wie im Beispiel oben gezeigt.

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