Microsoft Excel

Herbers Excel/VBA-Archiv

Macro zum Zeilen ausblenden (erweiterung)

Betrifft: Macro zum Zeilen ausblenden (erweiterung) von: Stefan
Geschrieben am: 09.07.2015 07:33:59

Hallo,
ich hatte ja nun schon einen Beitrag zum Spaltenausblenden via VBA geöffnet.
Leider weiss ich nicht wie man in diesem weiter schreiben kann.

Ich suche nun Hilfe beim Zeilen ausblenden. Wenn möglich auf die gleiche Weise.
Es soll die Zeile Ausblenden wenn in Zelle x eine 0 drin ist ansonsten nicht.
Es handelt sich um 19 Zeilen die einzeln je nach Inhalt ein oder ausgeblendet werden sollen.

Ich hab auch schon gebaut aber letztendlich kam es immer zu Fehlern und zwar so heftig das ich Excel zwangsbeenden musste. ;)

Folgend der Code wie er jetzt in meinem Tabellenblatt steht.

Private Sub Worksheet_Calculate()                                  
Dim Spalte As Integer                                                 
Dim Spalte1 As Integer
Dim Spalte2 As Integer
Dim Spalte3 As Integer
Dim SpalteEnd As Integer
Dim SpaltenString As String

With Tabelle20                                                          ' welche Tabelle


For Spalte = 32 To 33
If Spalte = 32 Then SpaltenString = "E:F" Else SpaltenString = "G:H"    ' Für Spalte E-F und G- _
H
If Cells(Spalte, 1) = 0 Then                                            ' Wenn 0 dann
.Columns(SpaltenString).Hidden = True                                   ' Spalte ausblenden
Else
.Columns(SpaltenString).Hidden = False                                  ' Wenn nicht 0 dann  _
nicht ausblenden
End If
For Spalte1 = 34 To 35
If Spalte1 = 34 Then SpaltenString = "I:J" Else SpaltenString = "K:L"   ' Wiederholung für I-J  _
und G-H
If Cells(Spalte1, 1) = 0 Then
.Columns(SpaltenString).Hidden = True
Else
.Columns(SpaltenString).Hidden = False
End If
For Spalte2 = 36 To 37
If Spalte2 = 36 Then SpaltenString = "M:N" Else SpaltenString = "O:P"   ' Wiederholung für M-N  _
und O-P
If Cells(Spalte2, 1) = 0 Then
.Columns(SpaltenString).Hidden = True
Else
.Columns(SpaltenString).Hidden = False
End If
For Spalte3 = 38 To 38
If Spalte3 = 38 Then SpaltenString = "Q:R" Else SpaltenString = "Q:R"   ' Wiederholung für Q  _
und R
If Cells(Spalte3, 1) = 0 Then
.Columns(SpaltenString).Hidden = True
Else
.Columns(SpaltenString).Hidden = False
End If

Next Spalte3
Next Spalte2
Next Spalte1
Next Spalte


End With
End Sub
Viele Grüße
Stefan

  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: JoWE
Geschrieben am: 09.07.2015 09:08:48

Hallo Stefan,

z.B. mit einem weiteren Makro:
Option Explicit

Sub hide_rows()
    'angenommen die Prüfzelle "x"  befände sich in der Spalte "A" der Tabelle1
    'dann könnte es, wenn die Prüfung innerhalb der 19 Zeilen von Zeile 2 bis Zeile 20
    'stattfinden sollte, vllt. so klappen:
    Dim ze As Range
    With Worksheets("Tabelle1")
        For Each ze In .Range("A2:A20")
            If ze = 0 Then
                .Rows(ze.Row & ":" & ze.Row).Hidden = True
            End If
        Next
    End With
End Sub

Gruß
Jochen


  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: Stefan
Geschrieben am: 09.07.2015 11:30:16

Ich habs eingefügt, passiert aber gar nix. Habe den Code aus Tabellenblatt 20 angehängt. Schön wäre auch wenn es bei jeder Neuberechnung aktiviert würde so wie der andere Code im Tabellenblatt.
Irgend wie steh ich noch auf dem Schlauch. Geht das überhaupt wenn der Code einfach anghängt wird?
VBA is noch ein bischen schwer für mich.

Gruß Stefan

Private Sub Worksheet_Calculate()                                      
Dim Spalte As Integer                                                   
Dim Spalte1 As Integer
Dim Spalte2 As Integer
Dim Spalte3 As Integer
Dim SpalteEnd As Integer
Dim SpaltenString As String

With Tabelle20                                                          ' welche Tabelle


For Spalte = 32 To 33
If Spalte = 32 Then SpaltenString = "E:F" Else SpaltenString = "G:H"    ' Für Spalte E-F und G- _
H
If Cells(Spalte, 1) = 0 Then                                            ' Wenn 0 dann
.Columns(SpaltenString).Hidden = True                                   ' Spalte ausblenden
Else
.Columns(SpaltenString).Hidden = False                                  ' Wenn nicht 0 dann  _
nicht ausblenden
End If
For Spalte1 = 34 To 35
If Spalte1 = 34 Then SpaltenString = "I:J" Else SpaltenString = "K:L"   ' Wiederholung für I-J  _
und G-H
If Cells(Spalte1, 1) = 0 Then
.Columns(SpaltenString).Hidden = True
Else
.Columns(SpaltenString).Hidden = False
End If
For Spalte2 = 36 To 37
If Spalte2 = 36 Then SpaltenString = "M:N" Else SpaltenString = "O:P"   ' Wiederholung für M-N  _
und O-P
If Cells(Spalte2, 1) = 0 Then
.Columns(SpaltenString).Hidden = True
Else
.Columns(SpaltenString).Hidden = False
End If
For Spalte3 = 38 To 38
If Spalte3 = 38 Then SpaltenString = "Q:R" Else SpaltenString = "Q:R"   ' Wiederholung für Q  _
und R
If Cells(Spalte3, 1) = 0 Then
.Columns(SpaltenString).Hidden = True
Else
.Columns(SpaltenString).Hidden = False
End If

Next Spalte3
Next Spalte2
Next Spalte1
Next Spalte


End With
End Sub

Sub hide_rows()
'angenommen die Prüfzelle "x" befände sich in der Spalte "A" der Tabelle1
'dann könnte es, wenn die Prüfung innerhalb der 19 Zeilen von Zeile 2 bis Zeile 20
'stattfinden sollte, vllt. so klappen:
Dim ze As Range
With Worksheets("Tabelle20")
For Each ze In .Range("S5:S22")
If ze = 0 Then
.Rows(ze.Row & ":" & ze.Row).Hidden = True
End If
Next
End With
End Sub


  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: JoWE
Geschrieben am: 09.07.2015 11:51:22

Hallo Stefan,

du wolltest Hilfe beim Ausblenden von Zeilen. Genau das mach das Makro "hide-rows()".
Dein Beispielcode blendet Spalten aus, das hat nun mit Deiner Eingangsfrage eigentlich nix zu tun.
Gib uns eine Beispieltabelle die sollte in einem Blatt die Ausgangssituation und in einem zweiten Blatt das korrespondierende Wunschergebnis zeigen.

Gruß
Jochen


  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: JoWE
Geschrieben am: 09.07.2015 11:52:03

Hallo Stefan,

du wolltest Hilfe beim Ausblenden von Zeilen. Genau das mach das Makro "hide-rows()".
Dein Beispielcode blendet Spalten aus, das hat nun mit Deiner Eingangsfrage eigentlich nix zu tun.
Gib uns eine Beispieltabelle die sollte in einem Blatt die Ausgangssituation und in einem zweiten Blatt das korrespondierende Wunschergebnis zeigen.

Ich stelle Deine Frage nochmal auf offen.

Gruß
Jochen


  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: Stefan
Geschrieben am: 09.07.2015 11:58:04

Jetz gehts hab With Worksheet durch With Tabelle20 ersetzt.
Wie bekomm ichs hin das er bei neuberechnung ändert?

Vielen Dank erstmal soweit

Sub hide_rows()
    'angenommen die Prüfzelle "x"  befände sich in der Spalte "A" der Tabelle1
    'dann könnte es, wenn die Prüfung innerhalb der 19 Zeilen von Zeile 2 bis Zeile 20
    'stattfinden sollte, vllt. so klappen:
    Dim ze As Range
    With Tabelle20
        For Each ze In .Range("S5:S22")
            If ze = 0 Then
                .Rows(ze.Row & ":" & ze.Row).Hidden = True
            End If
        Next
    End With
End Sub



  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: JoWE
Geschrieben am: 09.07.2015 12:04:32

z.B. mit diesem Code in der Tabelle:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    hide_rows
End Sub
Gruß
Jochen


  

Betrifft: AW: Macro zum Zeilen ausblenden (erweiterung) von: Stefan
Geschrieben am: 09.07.2015 15:48:03

Kann ich den Code

Sub hide_rows()
    'angenommen die Prüfzelle "x"  befände sich in der Spalte "A" der Tabelle1
    'dann könnte es, wenn die Prüfung innerhalb der 19 Zeilen von Zeile 2 bis Zeile 20
    'stattfinden sollte, vllt. so klappen:
    Dim ze As Range
    With Tabelle20
        For Each ze In .Range("S5:S22")
            If ze = 0 Then
                .Rows(ze.Row & ":" & ze.Row).Hidden = True
            End If
        Next
    End With
End Sub
Irgend wie in meine vorhandenen Code einbauen das dat Worksheet_Calculate benutzt wird.

Dein Code Funktioniert auch super. Nur bei jeder Zellauswahl soll er das nich machen.

Vielen Dank für die Hilfe.
Gruß
Stefan


 

Beiträge aus den Excel-Beispielen zum Thema "Macro zum Zeilen ausblenden (erweiterung)"