In Excel Spalten per Code ausblenden

Von: , Frage gestellt am Di, 15. Sep 2009

Guten Tag,
ich muss in Excel abhängig vom Zellinhalt der Zelle "D8" die Spalte "E" ausblenden / Einblenden.

Wenn der Wert in der Zelle "D8" der Wert "1" enthält, dann soll die Spalte "E" ausgeblendet werden. Wenn der Wert der Zelle "D8" ungleich "1" ist, dann soll die Splate wieder eingeblendet werden.

Habe das ganze realisiert über folgenden Code:

Private Sub Worksheet_Change(ByVal target As range)

If target = range("D8") Then
Select Case target.Value
Case Is = 1
Columns("E:E").Hidden = True
Case Is <> 1
Columns("E:E").Hidden = False

End Select
End If
End Sub


Das ganze funktioniert aber nur teilweise. Der Grund liegt vermutlich darin, dass der Wert der Zelle "D8" eine Formel enthält. Dies führt dazu, dass das Einblenden und ausblenden der Spalte E nur dann gemacht wird, wenn ich mit "F2" in den Bearbeitenmodus der Zelle "D8" gehe und Enter drücke.

Das ist aber natürlich keine Lösung. Das Ein- und Ausblenden sollte selbstverständlich automatisch gehen. Jemand eine Idee?

4 Antworten zu dieser Frage

  1. Antwort von nach 14 Minuten 0 hilfreich
    Re: In Excel Spalten per Code ausblenden

    Hallo

    Das Target muss stattdessen den Bereich umfassen, dessen Änderung zu einer Änderung des Formelwerts führt.

    Gruß
    smalbop

  2. Antwort von nach 33 Minuten 0 hilfreich
    Re: In Excel Spalten per Code ausblenden

    Warum beziehst du dich auf das dargestellte Ergebnis deiner Berechnung. Führe diese doch einfach im VBA durch.

    Dim wb As Workbook, ws As Worksheet
    Private Sub Worksheet_Change(ByVal target As Range)
    Set wb = ActiveWorkbook: Set ws = wb.ActiveSheet

    If ws.Cells(8, 1).Value + ws.Cells(8, 2).Value = 1 Then
    ws.Cells(1, 5).EntireColumn.Hidden = True
    Else: ws.Cells(1, 5).EntireColumn.Hidden = False
    End If
    End Sub

    • Antwort von nach 42 Minuten 0 hilfreich
      Re^2: In Excel Spalten per Code ausblenden

      Danke, das ist die Lösung.
      Nun hat sich allerdings ein weiteres Problem aufgetan:

      Habe die Zelle direkt in VBA berechnet. Es handelt sich allerdings nicht wie von dir vermutet um eine addition von 2 Werten sondern eine Division. Wie würde nun VBA-Code aussehen, der mir den Fehlerfall abfängt, dass ich eine Division durch NULL erhalte.

      Besten Dank schonmal für deinen kompetenten Rat.

      Andre Decker

      • Antwort von nach einer Stunde 0 hilfreich
        Re^3: In Excel Spalten per Code ausblenden

        Habe die Zelle direkt in VBA berechnet. Es handelt sich
        allerdings nicht wie von dir vermutet um eine addition von 2
        Werten sondern eine Division. Wie würde nun VBA-Code aussehen,
        der mir den Fehlerfall abfängt, dass ich eine Division durch
        NULL erhalte.
        Hallo Andre,

        wenn du sowieso schon mit Vba die Formel berechnest, dann blende doch gleich mit Vba die Spalte mit aus. Hier wird E ausgeblendet wenn D8 2,5 ist.

        Sub tt()
        On Error GoTo Fehler
        Range("A1").Value = 5
        Range("B1").Value = 0
        Range("D8").Value = Range("A1").Value / Range("B1").Value
        Columns(5).Hidden = IIf(Range("D8").Value = 2.5, True, False)
        Exit Sub
        Fehler:
        If Err.Number = 11 Then
        Range("D8").Value = "Nulldiv"
        Else
        Range("D8").Value = "anderer Fehler"
        End If
        End Sub
        


        Gruß
        Reinhard

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!