Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Range ausblenden in mehreren Tabellenblättern

Range ausblenden in mehreren Tabellenblättern
01.02.2019 09:42:43
Alex
Hallo zusammen,
folgendes Problem in meinem VBA Code:
Ich prüfe welche Zeilen und welche Spalten ausgeblendet werden und diese sollen dann in mehreren Sheets (Heißen von "C1" bis "C40") ausgeblendet werden.
Dim mappe As Variant
Dim wks As Worksheet
Dim rHidden As Range
Dim zHidden As Range
Dim intZ As Integer
mappe = Array("C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", _
"C13", "C14", "C15", "C16", "C17", "C18", "C19", "C20", "C21", "C22", "C23", "C24", _
"C25", "C26", "C27", "C28", "C29", "C30", "C31", "C32", "C33", "C34", "C35", "C36", _
"C37", "C38", "C39", "C40", "Staff Sales")
If Cells(42, Coun) = "-" Then
If zHidden Is Nothing Then
Set zHidden = Cells(42, Coun)
Else
Set zHidden = Union(zHidden, Cells(42, Coun))
End If
End If
Next
Sheets("C1").Select
For intZ = 1 To 100
If Cells(intZ, 157) = "-" Then
If rHidden Is Nothing Then
Set rHidden = Cells(intZ, 157)
Else
Set rHidden = Union(rHidden, Cells(intZ, 157))
End If
End If
Next
For Each wks In ThisWorkbook.Worksheets(mappe)
If Not rHidden Is Nothing Then Sheets(wks).rHidden.EntireRow.Hidden = True
If Not zHidden Is Nothing Then Sheets(wks).zHidden.EntireColumn.Hidden = True
Next wks
Ich lese die Info zu Zeilen und Spalten im ersten Sheet "C1" aus. Beim Teil vom Code wo ausgeblendet wird, blendet er bei jedem worksheet immer nur die Zeilen im Sheet "C1" aus.

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

Betreff
Datum
Anwender
Anzeige
AW: Range ausblenden in mehreren Tabellenblättern
01.02.2019 10:03:15
Alex
Es sollten allerdings die Sheets "C1" bis einschließlich "C40" bearbeitet werden.
Vielen Dank für eure Hilfe im Voraus :)
AW: Range ausblenden in mehreren Tabellenblättern
01.02.2019 10:23:33
Alex
Sorry, wenn ich das nicht so gut erklärt habe.
Dieser Teil passt also nicht:
For Each wks In ThisWorkbook.Worksheets(mappe)
If Not rHidden Is Nothing Then rHidden.EntireRow.Hidden = True
If Not zHidden Is Nothing Then zHidden.EntireColumn.Hidden = True
Next wks
Die Rhidden / zhidden range bezieht sich nur auf Sheet "C1". Wie kann ich die gespeicherten Adressen auch für andere Sheets anwenden? :)
AW: Range ausblenden in mehreren Tabellenblättern
01.02.2019 12:54:44
Rudi
Hallo,
Wie kann ich die gespeicherten Adressen auch für andere Sheets anwenden? :)
indem du sie ausliest.
If Not rHidden Is Nothing Then wks.Range(rHidden.Address).EntireRow.Hidden = True
Gruß
Rudi
Anzeige
AW: Range ausblenden in mehreren Tabellenblättern
01.02.2019 13:14:54
Alex
Lieber Rudi Maintaire,
danke für die 100% perfekte Lösung auf mein Problem :).
Schönes Wochenende!
AW: Range ausblenden in mehreren Tabellenblättern
01.02.2019 12:46:25
Karl-Heinz
Hallo Alex,
leider ist Dein Code weder vollständig noch lauffähig. (Z.B. fehlt das erste FOR...).
Außerdem beinhaltet m.E. rHidden als Objekt schon "Workbook" und "Sheet" und kann daher nicht auf andere angewendet werden.
Hier mal ein neuer Ansatz. Vielleicht kannst Du ja was damit anfangen...
Sub Ausblenden()
  Dim Mappe As Variant
  Dim rHidden As String, zHidden As String
  Dim intZ As Integer, Coun As Integer
  On Error Resume Next
  Mappe = Array("C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", _
        "C13", "C14", "C15", "C16", "C17", "C18", "C19", "C20", "C21", "C22", "C23", "C24", _
        "C25", "C26", "C27", "C28", "C29", "C30", "C31", "C32", "C33", "C34", "C35", "C36", _
        "C37", "C38", "C39", "C40", "Staff Sales")
'Auszublendende Spalten zusammensammeln
  With ThisWorkbook.Sheets("C1")
   For Coun = 1 To 100
     If .Cells(42, Coun) = "-" Then
        zHidden = zHidden & Replace(.Cells(1, Coun).Address, "$", "") & ","
     End If
   Next Coun
   zHidden = Left(zHidden, Len(zHidden) - 1)
   
'Auszublendende Zeilen zusammensammeln
   For intZ = 1 To 100
     If .Cells(intZ, 157) = "-" Then
        rHidden = rHidden & Replace(.Cells(intZ, 157).Address, "$", "") & ","
     End If
   Next intZ
  End With
  rHidden = Left(rHidden, Len(rHidden) - 1)
 
'Jetzt in den gewünschten Mappen C1 ff. ausblenden
 For i = 0 To UBound(Mappe)
   With ThisWorkbook.Sheets(Mappe(i))
    If rHidden <> "" Then .Range(rHidden).EntireRow.Hidden = True
    If zHidden <> "" Then .Range(zHidden).EntireColumn.Hidden = True
   End With
 Next i
End Sub

VBA=>HTML, (c) 2018 by KHV

viele Grüße
Karl-Heinz

Anzeige
AW: Range ausblenden in mehreren Tabellenblättern
01.02.2019 13:16:18
Alex
Lieber Karl Heinz,
danke für die tolle Hilfe,
erstmal top für das sehr gute Verständnis (bin nicht gut im erklären von Excelproblemen xD).
Ich hatte das Thema durch "wks.Range(rHidden.Address).EntireRow.Hidden " in den Griff bekommen.
Danke für den Tipp :)
Gruß
Alex

349 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige