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

Tabellenblätter auswählen

Forumthread: Tabellenblätter auswählen

Tabellenblätter auswählen
27.01.2005 11:00:24
Martin
In einer Datei möchte ich auf 53 Arbeitsmappen per Makro zugreifen, es soll in jeder Arbeitsmappe das gleiche umgesetzt werden.
Zum Beispiel: Es soll in allen 53 Arbeitsmappen die Spalten 10:29 gruppiert werden, danach soll die Arbeitsmappe mit einem Blattschutz versehen werden.
Ein kleiner Auszug aus dem Makro:
Sheets("KW 53-04").Select ' Mappe wird geöffnet
Rows("10:29").Select ' Spalten werden markiert
Selection.Rows.Group
Selection.EntireRow.Hidden = True ' Spalten werden gruppiert
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect Password:="xxxxxx", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A32").Select
Für eine kurzfristige Hilfe wäre ich sehr dankbar.
Gruß
Martin
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter auswählen
Martin
Hallo Martin,
da geht's ja mit den Begriffen schöön durcheinander. Ich nehme mal an, Du hast in einer Arbeitsmappe (=Exceldatei) 53 Tabellenblätter, für jede KW eines. Wenn keine weiteren Tabellenblätter existieren, mußt Du um Deinen Code nur eine Schleife basteln, in etwa so:
For i = 1 To 53
Worksheets(i).Select ' Mappe wird geöffnet
Rows("10:29").Select ' Spalten werden markiert
Selection.Rows.Group
Selection.EntireRow.Hidden = True ' Spalten werden gruppiert
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect Password:="xxxxxx", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A32").Select
Next i
Gruß
Martin Beck
Anzeige
AW: Tabellenblätter auswählen
27.01.2005 11:24:41
Harald
Hallo Martin,
ohne die Unterschiede in der Benennung der Blätter zu kennen, folgende Schleife
for i = 1 to worksheets.count
sheets(i).Rows("10:29").Select 'etc....
next i
Gruß
Harald
AW: Tabellenblätter auswählen
27.01.2005 14:37:42
Martin
Hallo Harald,
ich scheine noch irgendwo einen Boch zu haben.
Aber bei mir stoopt das Makro in der Zeile: "Sheets(i).Rows("10:29").Select"
Option Explicit

Sub Blattschutz_Woche_setzen()
Application.AskToUpdateLinks = False
Dim i As Integer
Dim MyPath As String
Dim MyWorkbooks As Variant
Dim MyBook As Variant
Dim MyWorkers As Integer
MyPath = "U:\outside\Betriebsstatistik\2005\"
MyWorkbooks = Array("Kopie von Wochenübersicht.xls")
MyBook = MyWorkbooks(MyWorkers)
Workbooks.Open Filename:=MyPath & MyBook
For i = 1 To Worksheets.Count
Sheets(i).Rows("10:29").Select
Selection.Rows.Group
Selection.EntireRow.Hidden = True
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect Password:="xxxxxxxx", DrawingObjects:=True, Contents:=True, _
Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A32").Select
Next i
Application.AskToUpdateLinks = True
Workbooks(MyBook).Close SaveChanges:=True
End Sub

Ich hoffe das du den Fehler sofort erkennst.
Gruß
Martin
Anzeige
AW: Tabellenblätter auswählen
Martin
Hallo Martin,
Worksheets(i).Activate
Rows("10:29").Select
Gruß
Martin Beck
AW: Tabellenblätter auswählen
27.01.2005 15:50:15
Martin
Hallo Harald,
hast du deine Korrektur getestet oder glaubst du nur das es so funktionieren kann.
Ich habe den Code wie folgt geändert und bekomme immer noch eine Fehlermeldung.
Das Makro bleibt in folgender Zeile stehen, mit einem gelben Pfeil am Zeilenanfang:
"For i = 1 To Worksheets.Count"
Option Explicit

Sub Blattschutz_Woche_setzen()
Application.AskToUpdateLinks = False
Dim i As Integer
Dim MyPath As String
Dim MyWorkbooks As Variant
Dim MyBook As Variant
Dim MyWorkers As Integer
MyPath = "U:\outside\Betriebsstatistik\2005\"
MyWorkbooks = Array("Kopie von Wochenübersicht.xls")
MyBook = MyWorkbooks(MyWorkers)
Workbooks.Open Filename:=MyPath & MyBook
For i = 1 To Worksheets.Count
Worksheets(i).Activate
Rows("10:29").Select
Selection.Rows.Group
Selection.EntireRow.Hidden = True
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect Password:="powepibe", DrawingObjects:=True, Contents:=True, _
Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A32").Select
Next i
Application.AskToUpdateLinks = True
Workbooks(MyBook).Close SaveChanges:=True
End Sub

Gruß
Martin
Anzeige
AW: Tabellenblätter auswählen
Martin
Hallo Martin,
getestet, aber ohne Deinen Code vorher und nachher. Wie lautet denn die Fehlermeldung?
Gruß
Martin Beck
AW: Tabellenblätter auswählen
28.01.2005 12:38:17
Martin
Hallo Martin,
vielen Dank für deine Mühe.
Das Problem wurde abschließend durch einen Befehl vom Harald behoben.
Bis demnächst
Gruß
Martin
AW: Tabellenblätter auswählen
27.01.2005 16:33:29
Martin
Hallo Haral,
wie ich schon schrieb.
Diese Zeile ist gelb markiert "For i = 1 To Worksheets.Count" und hat vorne am Zeilenanfang einen kleinen gelben Pfeil. Somit steht das Makro und läuft nicht weiter.
Fehlermeldung: Ausführen des Codes wurde unterbrochen
Wenn ich dann mehrfach auf fortfahren klicke endet jedoch das Makro mit dem gewünschtem Ergebnis.
Warum?
Gruß
Martin
Anzeige
AW: Tabellenblätter auswählen
28.01.2005 07:57:54
Harald
Hallo Martin,
die Schleife hab ich vorher getestet (ohne den Rest von deinem Code).
Wie gesagt, ohne die Namen der Sheets zu kennen, kann man nur im Dunkeln stochern.
Und ich vermute Du hast irgendwann mal ein Blatt gelöscht...und das war sheet 1. Daher meckert er, wenn er bei 1 starten soll und keine 1 da ist.
Schau im Editor unter Eigenschaften (Name), ob Tabelle1 existiert.
Ich empfehle nicht!!!!, über die Bennenung der Sheets gehen
worksheets("KW " & i & "-04")
Gibt Probleme bei unterschiedlichen Leerzellen und bei KW 01 bzw KW 1...je nach Schreibart.
Gruß
Harald
Anzeige
AW: Tabellenblätter auswählen
28.01.2005 08:53:53
Martin
Hallo Harald,
leider scheint es wohl doch "the never ending Story" zu sein. Was du mir schreibst verstehe ich leider nicht, da meine VBA Kenntnisse nicht ausreichend sind.
Wie die Arbeitsmappen heissen hatte ich in einer der vorigen Anfragen schon bekannt gegeben führe es aber unten noch einmal auf.
Nun starte ich meinen letzten Versuch mich auszudrücken, sollte das wieder zu flach sein werde ich das Makro einstellen.
Option Explicit

Sub Blattschutz_Woche_setzen()
Application.AskToUpdateLinks = False
Dim i As Integer
Dim MyPath As String
Dim MyWorkbooks As Variant
Dim MyBook As Variant
Dim MyWorkers As Integer
MyPath = "U:\outside\Betriebsstatistik\2005\"
MyWorkbooks = Array("Kopie von Wochenübersicht.xls")
MyBook = MyWorkbooks(MyWorkers)
Workbooks.Open Filename:=MyPath & MyBook
For i = 1 To Worksheets.Count
Worksheets(i).Activate
Rows("10:29").Select
Selection.Rows.Group
Selection.EntireRow.Hidden = True
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect Password:="xxxxxxxx", DrawingObjects:=True, Contents:=True, _
Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A32").Select
Next i
Application.AskToUpdateLinks = True
Workbooks(MyBook).Close SaveChanges:=True
End Sub

Die Arbeitsmappen heissen: KW 53-04, KW 1, KW 2, .... KW 52.
Gruß
Martin
Anzeige
AW: Tabellenblätter auswählen
28.01.2005 09:36:23
Harald
Moin,
Bange machen gilt nicht ;-))
Also die Blätter haben 2 Namen. Siehe im linken oberen Code Fenster unterhalb "DieseArbeitsmappe"
Jungfräulich sieht das so aus
Tabelle1 (Tabelle1)
etc.
Bei dir stehts dann etwa so Tabelle1(KW 53-04). Falls Du irgendwann mal ein Blatt gelöscht hast, könnte es Tabelle1(irgendwas) gewesen sein und das erste Blatt der Datei wäre dann Tabelle2(irgendwas). Somit findet i = 1 kein Tabellenblatt.
Die Suche per worksheets(i) sucht nach dem was vor der Klammer steht
Die Suche per worksheets("KW " & i & "-04") sucht nach dem Namen in den Klammern.
Mit den bereits genannten Nachteilen (Leerzellen,Schreibart)
Probier auch mal folgendes:
on error resume next
direkt vor die Schleife setzen.
Damit ist mein Pulver dann aber auch verschossen.
Gruß
Harald
Anzeige
AW: Tabellenblätter auswählen
28.01.2005 12:35:51
Martin
Hallo Harald,
vielen Dank für deine Hilfe Ausdauer.
Jetzt hat es geklappt.
Ich habe die Zeile: "on error resume next" eingefügt und das Problem war behoben.
Bis bald
Gruß
MArtin
Freut mich :-) o.T.
28.01.2005 13:35:30
Harald
;

Forumthreads zu verwandten Themen

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

Tabellenblätter effizient auswählen und aktivieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um mit VBA mehrere Tabellenblätter auszuwählen und zu bearbeiten, kannst du die folgende Schritt-für-Schritt-Anleitung verwenden. Hier ist ein Beispiel, wie du alle Arbeitsblätter in einer Excel-Datei aktivieren und eine bestimmte Aktion ausführen kannst:

  1. Öffne das Excel-Dokument, in dem du die Tabellenblätter bearbeiten möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu (Einfügen > Modul).
  4. Verwende den folgenden Code:
Sub Blattschutz_Woche_setzen()
    Application.AskToUpdateLinks = False
    Dim i As Integer
    Dim MyPath As String
    Dim MyWorkbooks As Variant
    MyPath = "U:\outside\Betriebsstatistik\2005\"
    MyWorkbooks = Array("Kopie von Wochenübersicht.xls")

    Workbooks.Open Filename:=MyPath & MyWorkbooks(0)

    For i = 1 To Worksheets.Count
        Worksheets(i).Activate
        Rows("10:29").Select
        Selection.Rows.Group
        Selection.EntireRow.Hidden = True
        Cells.Select
        Selection.Locked = True
        Selection.FormulaHidden = True
        ActiveSheet.Protect Password:="xxxxxx", DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveSheet.EnableSelection = xlUnlockedCells
        Range("A32").Select
    Next i

    Application.AskToUpdateLinks = True
    Workbooks(MyWorkbooks(0)).Close SaveChanges:=True
End Sub
  1. Passe die Dateipfade und den Passwortschutz nach Bedarf an.
  2. Führe das Makro aus, um die gewünschten Änderungen vorzunehmen.

Häufige Fehler und Lösungen

  • Fehler: „Ausführen des Codes wurde unterbrochen“
    Dies kann passieren, wenn ein Blatt gelöscht wurde, das im Code referenziert wird. Überprüfe die Existenz der Blätter oder verwende On Error Resume Next, um Fehler zu ignorieren.

  • Fehler: „Blatt nicht gefunden“
    Stelle sicher, dass die Blattnamen korrekt sind. Verwende Worksheets("KW " & i & "-04"), um verschiedene Schreibweisen zu berücksichtigen.

  • Fehler: Das Makro stoppt an einer bestimmten Zeile
    Überprüfe, ob das Arbeitsblatt existiert oder ob du möglicherweise einen Schreibfehler im Blattnamen hast.


Alternative Methoden

Falls du eine spezifische Tabelle auswählen möchtest, kannst du auch die folgende Methode verwenden:

Worksheets("KW 1").Activate

Diese Methode ist besonders nützlich, wenn du nur auf ein bestimmtes Blatt zugreifen möchtest, anstatt alle zu durchlaufen.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von excel vba worksheet auswählen:

  1. Aktivieren eines bestimmten Worksheets:

    Worksheets("KW 2").Activate
  2. Gruppieren von Zeilen auf mehreren Blättern:

    For i = 1 To Worksheets.Count
       Worksheets(i).Rows("10:29").Group
    Next i
  3. Blattschutz aktivieren:

    ActiveSheet.Protect Password:="deinPasswort"

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um das Flackern beim Ausführen von Makros zu reduzieren.
  • Verwende With Worksheets(i) für effizienteren Code:
With Worksheets(i)
    .Rows("10:29").Group
    .Protect Password:="xxxxxx"
End With
  • Teste deinen Code immer mit einer Kopie deiner Daten, um ungewollte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich ein verstecktes Blatt mit VBA auswählen?
Verwende Worksheets("NameDesBlattes").Visible = xlSheetVisible und dann Worksheets("NameDesBlattes").Activate.

2. Was ist der Unterschied zwischen Select und Activate?
Select wählt das Objekt aus, während Activate das Objekt aktiv macht, sodass es verwendet werden kann.

3. Wie kann ich den Blattschutz aufheben?
Verwende ActiveSheet.Unprotect Password:="deinPasswort".

4. Was ist ActiveSheet.EnableSelection?
Dieser Befehl steuert, welche Zellen auf dem aktiven Blatt ausgewählt werden können, z.B. nur entsperrte Zellen.

5. Wie kann ich VBA so anpassen, dass es nur bestimmte Blätter bearbeitet?
Füge Bedingungen in die Schleife ein, um nur die gewünschten Blätter auszuwählen.

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