Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Woersi am Oktober 05, 2017, 10:31:11 Vormittag

Titel: Office 2016 [VBA] Spalten ausblenden wenn Bedingungen erfüllt sind
Beitrag von: Woersi am Oktober 05, 2017, 10:31:11 Vormittag
Hallo liebe Excel-Gemeinde,

ich versuche nun schon seit geraumer Zeit per VBA bestimmte Spalten ausblenden zulassen.

Folgendermaßen sieht meine Tabelle aus:

In Tabellenblatt1 (Ausgang Gesamt) steht in Zeile 2 eine Zahl von 1-7 die sich aus folgender Formel ergibt:

=WOCHENTAG(VERKETTEN(C3;B2))
Springt nun in Tabellenblatt 1 Zelle C3 eine 1 oder 7 raus, soll in Tabellenblatt 2 die Spalte B ausgeblendet werden.
Mein Code sieht akutell so aus:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Ws As Worksheet: Set Ws = ThisWorkbook.Worksheets(2)
    With Target
        If .Cells.Count = 1 Then
            Select Case .Address
                Case Is = "$C$2"
                    If .Value = "1" Then
                        Ws.Columns("2").EntireColumns.Hidden = True
                    Else:
                        Ws.Columns("2").EntireColumns.Hidden = False
                    End If
                Case Is = "$C$2"
                    If .Value = "7" Then
                        Ws.Columns("1:1").EntireColumn.Hidden = True
                    Else:
                        Ws.Columns("1:1").EntireColumn.Hidden = False
                    End If
            End Select
        End If
    End With
    Set Ws = Nothing
End Sub

Es passiert aber leider nichts. Ich muss dazu sagen, ich bin ein absoluter VBA-Anfänger. Und den Code habe ich mit Hilfe von Google zusammen geschustert.

Viele Grüße
Woersi
Titel: Antw:Office 2016 [VBA] Spalten ausblenden wenn Bedinungen erfüllt sind
Beitrag von: lupo1 am Oktober 05, 2017, 10:49:31 Vormittag
Ein Tipp (habe Dein Posting nicht gelesen):

Vor einer .Hidden-Änderung am besten alles einblenden und dann selektiv neu ausblenden.

Oder: Das Ganze eben umgekehrt!

Dann kannst Du klare Regeln vergeben und musst vor allem NIEMALS den Istzustand kontrollieren. Der kann sich nämlich auch MANUELL verändert haben (also außerhalb eines Makros)! Der Code wird kürzer - und man macht das mit .ScreenUpdating = FALSE/TRUE.