Probleme mit Schleife
#1
Hallo zusammen,

ich bin neu hier im Forum und dies ist mein 1. Beitrag. Ich habe eigentlich ganz ordentliche Kenntnisse bei Excelanwendungen, leider happert es bei VBA.
Ich habe schon alles mögliche aus diversen Foren probiert, leider ohne Erfolg.

Zu meinem Problem:
In einer Excelanwendung sollen auf allen ca. 30 Arbeitsblättern alle Spalten ab dem Eintrag "BerA" in Zeile 1 mit einem Makro ausgeblendet werden.
Der Eintrag "BerA" steht in unterschiedlichen Zellen in Zeile 1.

Der nachfolgende Code steigt bei  "Range(rngA, rngZ).EntireColumn.Hidden = True" aus.

Nur für 1 Arbeitsblatt, ohne Schleife, funktioniert es.
Sobald die Schleife aktiviert ist, kommt die Fehlermeldung "Laufzeitfehler 1004"  - die Methode  Range für das Objekt ' _Worksheet' ist fehlgeschlagen".


Sicher kann mir jemand helfen?
Dafür schon mal besten Dank.

Reiner

'---------------------------------------------------------------------------------------

            Application.ScreenUpdating = False
            ActiveSheet.Protect Password:="", userinterfaceonly:=True
            
            Dim ws As Worksheet
  
           '------------------------------------------------------------------
            Dim sht As Worksheet
            For Each sht In ThisWorkbook.Worksheets
           
           '------------------------------------------------------------------
            Dim rngA As Range
            Dim rngZ As Range
           
           '------------------------------------------------------------------           
           'Bereich A
            Set rngA = Rows(1).Find("BerA", lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True)
            
            Set rngZ = Cells(1, 16384)
            
           'Bereich A - Z ausblenden
            Range(rngA, rngZ).EntireColumn.Hidden = True

           '------------------------------------------------------------------
           
            Next sht
Top
#2
Hallo,

wo hast Du deinen Code stehen? Im Klassenmodul einer Tabelle? Setze noch die Objektvariable davor.

Code:
Application.ScreenUpdating = False
            ActiveSheet.Protect Password:="", userinterfaceonly:=True
            
            Dim ws As Worksheet
  
           '------------------------------------------------------------------
            Dim sht As Worksheet
            For Each sht In ThisWorkbook.Worksheets
          
           '------------------------------------------------------------------
            Dim rngA As Range
            Dim rngZ As Range
            
           '------------------------------------------------------------------
           'Bereich A
            Set rngA = sht.Rows(1).Find("BerA", lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True)
            
            Set rngZ = sht.Cells(1, 16384)
            
           'Bereich A - Z ausblenden
            sht.Range(rngA, rngZ).EntireColumn.Hidden = True

           '------------------------------------------------------------------
          
            Next sht
Gruß Stefan
Win 10 / Office 2016
Top
#3
Vielen Dank Steffl, für die schnelle Antwort.


Leider funktioniert es immer noch nicht. Es kommt die gleiche Fehlermeldung.
Kannst Du mir erklären, wo der Code genau stehen muss. 
Dafür jetzt schon vielen Dank.

Grüße

Reiner
Top
#4
Hallo

Steffis Code ist korrekt, wenns trotzdem nicht geht, dann liegt das daran, dass auf irgendeinem Blatt der Begriff "BerA" nicht gefunden wird.

vg, MM
Top
#5
Vielen Dank an Steffi und mmat.

Das war's.
Ich habe zum Testen den Begriff "BerA" auf nur 3 Arbeitsblätter eingetragen.
Jetzt lläuft der Code durch und der jeweilige Bereich wird korrekt ausgeblendet.

Grüße

Reiner
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste