In Excel Spalten per Code ausblenden

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?

Hallo

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

Gruß
smalbop

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

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

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