Anzeige
Archiv - Navigation
1300to1304
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Worksheets(Array()) Schleife

Worksheets(Array()) Schleife
28.02.2013 18:56:59
Dani
Hallo an alle,
habe folgenden Code aus dem Archiv zusammengeschustert, aber leider wird das Makro nur in dem Blatt ausgeführt, was gerade aktiv ist, anstatt auf die definierten Tabellenblätter?!
Wisst Ihr warum das so ist?
Danke!
Dani
Sub SpaltenAusblendenRest()
Dim Startmonat, Folgemonat As Date
Dim wks, arrwks
arrwks = Array(Worksheets("Tabelle4"), Worksheets("Tabelle8"), Worksheets("Tabelle9"),  _
Worksheets("Tabelle10"))
Folgemonat = DateSerial(Year(Date), Month(Date), 1)
Startmonat = DateSerial(Year(Date), Month(Date) - 14, 1)
SpalteE = Application.Match(CLng(Folgemonat), Range("A4:BT4"), 0)
SpalteA = Application.Match(CLng(Startmonat), Range("A4:BT4"), 0)
For Each wks In arrwks
If IsError(SpalteE) Then
MsgBox "Datum-Spalte nicht vorhanden"
Else
Range(Cells(4, SpalteE), Cells(1, 72)).EntireColumn.Hidden = True
End If
If IsError(SpalteA) Then
MsgBox "Datum-Spalte nicht vorhanden"
Else
Range(Cells(1, 2), Cells(4, SpalteA)).EntireColumn.Hidden = True
End If
Next wks
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheets(Array()) Schleife
28.02.2013 19:01:29
ransi
Hallo
Du musst excel sagen auf welches Blatt es sich beziehen soll.
Sonnst wird immer das ActiveSheet genommen.
For Each wks In arrwks
    With wks
        If IsError(SpalteE) Then
            
            MsgBox "Datum-Spalte nicht vorhanden"
        Else
            .Range(.Cells(4, SpalteE), .Cells(1, 72)).EntireColumn.Hidden = True
        End If
        
        If IsError(SpalteA) Then
            MsgBox "Datum-Spalte nicht vorhanden"
        Else
            .Range(.Cells(1, 2), .Cells(4, SpalteA)).EntireColumn.Hidden = True
            
        End If
    End With
Next wks


ransi

Anzeige
AW: Worksheets(Array()) Schleife
28.02.2013 20:56:15
Dani
Hallo Ransi,
nachdem ich jetzt das "with wks" / end with eingefügt habe, wird wieder nur das aktive Blatt bearbeitet - nicht alle definierten?!
Fehlt da noch etwas anderes?
Danke Dir nochmal!
Dani

AW: Worksheets(Array()) Schleife
01.03.2013 07:34:24
hary
Moin Dani
Wenn du mit with arbeitest, gehoert immer ein Punkt vor Cells oder Range.
Die nach den Punkten (Range/Cells) werden dem wks zugewiesen
Bsp.:
With wks
.Range("A1")+ .Range("B1") heisst wks.Range("A1") + wks.Range("B1")
.Range("A1")+ Range("B1") heisst wks.Range("A1") + AktiveBlatt.Range("B1")
Range("A1")+ Range("B1") heisst AktiveBlatt.Range("A1") + AktiveBlatt.Range("B1")
end with
Also muss ein Punkt immer davor gesetzt werden damit VBA weiss zu welchem Blatt Range oder Cells gehoert.
gruss hary

Anzeige
PERFEKT >>> funktioniert!
01.03.2013 08:59:48
Rene
Besten Dank Hary & Ransi - das habe ich mir gleich zu meinen Unterlagen ausgedruckt und rot markiert, denn dummerweise hatte ich die Punkte in Deiner Änderung, Ransi, vollkommen übersehen :-(( - vor lauter Bäumen sieht man wohl irgendwann den Wald nicht mehr ...
Viele liebe Grüße
Dani

23 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige