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?
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.
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