Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Ausblenden umkehren ohne Schleife

Betrifft: Ausblenden umkehren ohne Schleife von: Robert
Geschrieben am: 16.09.2014 14:05:57

Hallo zusammen,

ich würde gerne in einer Liste mit ausgeblendeten Zeilen alle sichtbaren aus- und alle ausgeblendeten Zeilen einblenden.
Quasi das ganze umkehren.

Gibt es eine einfache Möglichkeit via VBA das zu realisieren ohne eine Schleife über alle Zeilen zu machen und EntireRow.Hidden abzufragen?

Viele Grüße
Robert

  

Betrifft: AW: Ausblenden umkehren ohne Schleife von: Rudi Maintaire
Geschrieben am: 16.09.2014 14:34:41

Hallo,
das geht nicht ohne Schleife.
Aber den Zustand kannst du einfach umkehren.
R.Hidden = Not R.Hidden

Gruß
Rudi


  

Betrifft: AW: Ausblenden umkehren ohne Schleife von: Adis
Geschrieben am: 16.09.2014 14:36:54

Hallo

auf die Idee bin ich auch noch nicht gekommen. Interessante Aufgabe ...
Hier eine kurze Makro Lösung, wesentlich schneller als For Next Schleife.
Würde mich sehr freuen wenn es klappt. Rückmeldung würde mich freuen.

Dim Adr, TAdr

Sub Zeilen_umgekehrt_Ein_Ausblenden()
   On Error GoTo Fehler
   'Adresse der ausgeblendeten Zeilen ermitteln
   Adr = Cells.SpecialCells(xlCellTypeVisible).Address
   'ale Zeilen wieder einblenden
   Rows("1:65536").EntireRow.Hidden = False
   'Adresse in Teil Adressen zerlegen + ausblenden
   Do While InStr(Adr, ",")
      TAdr = Left(Adr, InStr(Adr, ",") - 1)
      Adr = Right(Adr, Len(Adr) - Len(TAdr) - 1)
      Rows(TAdr).EntireRow.Hidden = True
   Loop
   'letzte Zeilen Adresse ausblenden
   Rows(Adr).EntireRow.Hidden = True
Exit Sub
Fehler:  MsgBox "keine ausgelendeten Zeilen gefunden"
End Sub
Gruss Adis


  

Betrifft: gute Idee, aber ... von: Rudi Maintaire
Geschrieben am: 16.09.2014 14:49:11

Hallo,
...das geht mit viel weniger Aufwand.

Sub aaa()
  Dim rVis As Range
  Set rVis = Cells.SpecialCells(xlCellTypeVisible)
  Rows.Hidden = False
  rVis.EntireRow.Hidden = True
End Sub
Gruß
Rudi


  

Betrifft: AW: Ausblenden umkehren ohne Schleife von: Daniel
Geschrieben am: 16.09.2014 14:38:29

Hi

1. merke dir die sichtbaren Zeilen in einer Variablen:
Set rngSichtbar = ActiveSheet.Usedrange.SpecialCells(xlcelltypevisible)

2. blende alle Zellen ein:
Rows.Hidden = False

3. Blende die die Zeilen in der Variablen aus:
rngSichtbar.EntireRow.Hidden = True

Gruß Daniel


  

Betrifft: AW: Ausblenden umkehren ohne Schleife von: Adis
Geschrieben am: 16.09.2014 14:45:29

Hallo Danie

deine Lösung hatte ich nicht gesehen. Da hatten wir wohl beide die gleiche Idee,
über SpecialCells.Visible. Deine Lösung ist sogar noch eleganter. Hut ab ...

Gruss Adis


  

Betrifft: Vielen Dank, elegante Lösungen von: Robert
Geschrieben am: 16.09.2014 14:50:54

Vielen Dank!

Hallo zusammen,

Vielen Dank an euch drei, die Lösung mit dem merken der sichbaren Zellen in einer Rangevariablen gefällt mir sehr gut.

Viele Grüße
Robert


  

Betrifft: AW: Ausblenden umkehren ohne Schleife von: fcs
Geschrieben am: 16.09.2014 14:52:21

Hallo Robert,

es funktioniert mit folgendem Makro.

Ich hab es aber nur mit wenigen Zeilen getestet. Außerdem funktioniert es nicht in Verbindung mit Autofilter und Tabellen-Objekten.

Gruß
Franz

Sub EinAusblendenZeilen()
  Dim rngVisible As Range, wks As Worksheet
  Dim Zeile_1 As Long, Zeile_L As Long, StatusCalc As Long
  
  On Error GoTo Fehler
  
  Set wks = ActiveSheet
  Zeile_1 = 4                           '### anpassen !!!
  
  'Makrobremsen lösen
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    StatusCalc = .Calculation
    .Calculation = xlCalculationManual
  End With
  
  With wks
    If .AutoFilterMode = True Then
      MsgBox "Makro funktioniert nicht in Verbindung mit Autofilter", _
          vbOKOnly, "Makro: EinAusblendneZeilen"
      GoTo Fehler
    ElseIf .ListObjects.Count > 0 Then
      MsgBox "Makro funktioniert nicht in Verbindung mit Tabellen-Objekten", _
          vbOKOnly, "Makro: EinAusblendneZeilen"
      GoTo Fehler
    End If
    
    With .UsedRange
      Zeile_L = .Row + .Rows.Count - 1
    End With
    Set rngVisible = .Range(.Rows(Zeile_1), _
          .Rows(Zeile_L)).SpecialCells(xlCellTypeVisible).EntireRow
    .Rows.Hidden = False
    rngVisible.Hidden = True
  End With
  
Fehler:
  With Err
    Select Case .Number
      Case 0 ' alles OK
      Case 1004
        wks.Rows.Hidden = False
      Case Else
        MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
    End Select
  End With
  'Makrobremsen zurücksetzen
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = StatusCalc
  End With
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Ausblenden umkehren ohne Schleife"