Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
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

Zeilen in mehreren Arbeitsblättern ausblenden

Zeilen in mehreren Arbeitsblättern ausblenden
Sebastian
Hallo Foren - Nutzer,
Ich versuche mich seit einigen Tagen an einem Stück Code, welcher die Namen der nicht ausgeblendeten Arbeitsblättern in ein Variantarray einlist. Danach möchte ich in diesen Arbeitsblättern die Zeilen ausblenden, wenn im ersten Arbeitsblatt eine bestimmte Bedingung erfüllt ist. Bitte korrigiert meinen Ansatz, da ich das Ansprechen des Arrays nicht hinbekomme.
Vielen Dank im Voraus,
Sebastian
Sub Ausblenden()
Dim Ws As Worksheet             'Worksheet
Dim intZ As Integer             'Zähler
Dim StrWsName As Variant        'Namen der Ws
Dim WsArray As Variant          'Namen der Ws als Array
Dim rngA As Range               'Alle Zeilen mit erfüllter Bedingung zum Ausblenden
For Each Ws In Worksheets
If Ws.Name = "Anleitung" Then Exit For
If Ws.Visible = True Then
If StrWsName = "" Then StrWsName = Ws.Name Else StrWsName = StrWsName & "," & Ws. _
Name
End If
Next
'Ws Namen in Array
WsArray() = Split(StrWsName, ",")
'Schutz aller Ws im Array aufheben
Sheets(WsArray).Unprotect
'Zeilen ausblenden
'Alle Zeilen in Ws "Verzeichnis", deren Zellen in Spalte 5 leer sind in rngA
With Worksheets("Verzeichnis")
For intZ = 6 To .UsedRange.Rows.Count
If .Cells(intZ, 5) = "" Then
If rngA Is Nothing Then
Set rngA = .Rows(intZ)
Else
Set rngA = Union(rngA, .Rows(intZ))
End If
End If
Next intZ
End With
'Alle Zeilen des rngA in den Ws von WsArray ausblenden
If Not rngA Is Nothing Then Sheets(WsArray).rngA.EntireColumn.Hidden = True
'Ws schützen
Sheets(WsArray).Protect AllowFiltering:=True
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeilen in mehreren Arbeitsblättern ausblenden
02.05.2011 11:40:17
Rudi
Hallo,
so sollte das klappen:
Sub Ausblenden()
Dim Ws As Worksheet             'Worksheet
Dim intZ As Integer             'Zähler
Dim StrWsName As Variant        'Namen der Ws
Dim WsArray As Variant          'Namen der Ws als Array
Dim rngA As Range               'Alle Zeilen mit erfüllter Bedingung zum Ausblenden
For Each Ws In Worksheets
If Ws.Name = "Anleitung" Then Exit For
If Ws.Visible = True Then
If StrWsName = "" Then
StrWsName = Ws.Name
Else
StrWsName = StrWsName & "," & Ws.Name
End If
End If
Next
'Ws Namen in Array
WsArray = Split(StrWsName, ",")
'Zeilen ausblenden
'Alle Zeilen in Ws "Verzeichnis", deren Zellen in Spalte 5 leer sind in rngA
For Each StrWsName In WsArray
Set rngA = Nothing
With Sheets(StrWsName)
.Unprotect
For intZ = 6 To .UsedRange.Rows.Count
If .Cells(intZ, 5) = "" Then
If rngA Is Nothing Then
Set rngA = .Rows(intZ)
Else
Set rngA = Union(rngA, .Rows(intZ))
End If
End If
Next intZ
.Protect AllowFiltering:=True
End With
'Alle Zeilen des rngA in den Ws von WsArray ausblenden
If Not rngA Is Nothing Then Sheets(WsArray).rngA.EntireColumn.Hidden = True
Next StrWsName
End Sub

Gruß
Rudi
Anzeige
AW: Zeilen in mehreren Arbeitsblättern ausblenden
02.05.2011 13:53:54
Sebastian
Hallo Rudi,
Vielen Dank für Deine Korrektur. Leider ergibt sich ein Fehler in der Zeile zum Ausblenden der Zeilen.
Eine Frage hätte ich noch zu Deinem Code: Die Bedingung für das Ausblenden der Zeilen in allen Arbeitsblättern im Array steht nur im Arbeitsblatt "Verzeichnis", d.h. wenn eine Zelle in Spalte 5 des Arbeitsblattes "Verzeichnis" leer ist, dann blende diese Zeile in allen Arbeitsblättern des Arrays aus. Kann die zweite For each Schlaufe so funktionieren?
Vielen Dank!
Sebastian
AW: Zeilen in mehreren Arbeitsblättern ausblenden
02.05.2011 14:15:07
Rudi
Hallo,
evtl. so:
Sub Ausblenden()
Dim Ws As Worksheet             'Worksheet
Dim intZ As Integer             'Zähler
Dim StrWsName As Variant        'Namen der Ws
Dim WsArray As Variant          'Namen der Ws als Array
Dim rngA As Range               'Alle Zeilen mit erfüllter Bedingung zum Ausblenden
Dim objRows As Object
Set objRows = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
If Ws.Name = "Anleitung" Then Exit For
If Ws.Visible = True Then
If StrWsName = "" Then
StrWsName = Ws.Name
Else
StrWsName = StrWsName & "," & Ws.Name
End If
End If
Next
'Ws Namen in Array
WsArray = Split(StrWsName, ",")
Zeilen merken
With Sheets("Verzeichnis")
For intZ = 6 To .UsedRange.Rows.Count
If .Cells(intZ, 5) = "" Then objRows(intZ) = intZ
Next intZ
End With
If objRows.Count > 0 Then
'Zeilen ausblenden
For Each StrWsName In WsArray
With Sheets(StrWsName)
Set rngA = .Rows(objRows.items(0))
For intZ = 1 To UBound(objRows.items)
Set rngA = Union(rngA, .Rows(objRows.items(0)))
Next
.Unprotect
rngA.Hidden = True
.Protect AllowFiltering:=True
End With
Next StrWsName
End If
End Sub

Gruß
Rudi
Anzeige
AW: Zeilen in mehreren Arbeitsblättern ausblenden
02.05.2011 15:17:52
Sebastian
Hallo Rudi,
Danke für Deine Arbeit, doch nun erhalte ich in der Zeile Set rngA = .Rows(objRows.items(0)) die Fehlermeldung "Let Prozedur der Eigenschaft ist nicht definiert, und Get-Prozedur hat kein Objekt zurückgegeben".
Danke!
Sebastian
jetzt aber
02.05.2011 15:35:26
Rudi
Hallo,
Sub Ausblenden()
Dim Ws As Worksheet             'Worksheet
Dim intZ As Integer             'Zähler
Dim StrWsName As Variant        'Namen der Ws
Dim WsArray As Variant          'Namen der Ws als Array
Dim rngA As Range               'Alle Zeilen mit erfüllter Bedingung zum Ausblenden
Dim objRows As Object, arrRows
Set objRows = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
If Ws.Name = "Anleitung" Then Exit For
If Ws.Visible = True Then
If StrWsName = "" Then
StrWsName = Ws.Name
Else
StrWsName = StrWsName & "," & Ws.Name
End If
End If
Next
'Ws Namen in Array
WsArray = Split(StrWsName, ",")
'Zeilen merken
With Sheets("Verzeichnis")
For intZ = 6 To .UsedRange.Rows.Count
If .Cells(intZ, 5) = "" Then objRows(intZ) = intZ
Next intZ
End With
If objRows.Count > 0 Then
'Zeilen ausblenden
arrRows = objRows.items
For Each StrWsName In WsArray
With Sheets(StrWsName)
Set rngA = .Rows(arrRows(0))
For intZ = 1 To UBound(arrRows)
Set rngA = Union(rngA, .Rows(arrRows(intZ)))
Next
.Unprotect
.Rows.Hidden = False
rngA.EntireRow.Hidden = True
.Protect AllowFiltering:=True
End With
Next StrWsName
End If
End Sub

Gruß
Rudi
Anzeige
AW: jetzt aber
02.05.2011 16:22:23
Sebastian
Hallo Rudi,
Cool, genau so habe ich mir das vorgestellt!
Vielen Dank,
Sebastian

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige