Spalten ein und ausblenden
#1
Hallöchen zusammen,
ich habe folgendes Problem.

Ich möchte für eine monatliche Spesenabrechnung, dass je nach Monat die Spalten für Tag 29 bis 31 (Februar )ausgeblendet werden. Für die Monate mit 30 Tage nur die Zeile für Tag 31.
Ich bin schon auf folgendes gestoßen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$4" Then
    If Target.Value = "28" Then
        Rows("7:9").Hidden = True
    Else
        Rows("7:9").Hidden = False
    End If
ElseIf Target.Address = "$G$5" Then
    If Target.Value = "29" Then
        Rows("8:9").Hidden = True
    Else
        Rows("8:9").Hidden = False
    End If
ElseIf Target.Address = "$G$6" Then
    If Target.Value = "30" Then
        Rows("9:9").Hidden = True
    Else
        Rows("9:9").Hidden = False
    End If
End If
End Sub


Das funktioniert auch super. Die Zeilen werden je nach Eingabe in den Zellen G4 bis G6 ausgeblendet.
Nun ist jedoch das Problem, wenn ich die Zeilen über weine Formel fülle, z.B G4: =WENN(G3=WAHR;28;0)
Die Zeile G4 übernimmt die Zahl 28 jedoch gehen die Spalten nicht weg. Es geht nur wenn ich in den Zellen G4, G5 und G6 die Zahl direkt eintrage.
Wie kann ich das Lösen?

Gruß Bruno
Top
#2
Hallo Bruno,

zuerst solltest du dir mal überlegen, ob nun Zeilen oder Spalten ausgeblendet werden sollen - du widersprichst dir nämlich selbst.

Verwende das Worksheet_Calculate-Ereignis. Worksheet_Change funktioniert nicht bei Formeln.
Schöne Grüße
Berni
Top
#3
Hallo Berni,

ich meine natürlich Zeilen. Hatte es schon abgeschickt als ich es bemerkt habe, sorry.
Habe Worksheet_Calculate-Ereignis ausprobiert und den gleichen Code eingegeben.

Da geht dann gar nichts mehr

Private Sub Worksheet_Calculate()
If Target.Address = "$G$4" Then
    If Target.Value = "28" Then
        Rows("7:9").Hidden = True
    Else
        Rows("7:9").Hidden = False
    End If
ElseIf Target.Address = "$G$5" Then
    If Target.Value = "29" Then
        Rows("8:9").Hidden = True
    Else
        Rows("8:9").Hidden = False
    End If
ElseIf Target.Address = "$G$6" Then
    If Target.Value = "30" Then
        Rows("9:9").Hidden = True
    Else
        Rows("9:9").Hidden = False
    End If
End If
End Sub
Top
#4
Hallo Bruno,

vielleicht so:
Private Sub Worksheet_Calculate()
Rows("7:9").Hidden = Range("$G$4").Value = 28
Rows("8:9").Hidden = Range("$G$5").Value = 29
Rows("9:9").Hidden = Range("$G$6").Value = 30
End Sub
Gruß Uwe
Top
#5
Das kann so auch nicht funktionieren, weil du die Zahlen 28, 29 und 30 in Anführungszeichen setzt. Und damit sind sie Text. Lass die Anführungszeichen weg.
Schöne Grüße
Berni
Top
#6
Hallo Kuver,

da funktioniert nur richtig bei Eingabe von 30. Bei 28 blendet er die Zeile 7 nur aus. Das wird an der Mehrfach Ausblendung der Zeilen liegen
Bei 28 lässt bleibt die Zeil 8 und 9, bei 29 bleibt die Zeile 9, bei 30 funktioniert es
Top
#7
Hallöchen,

das Makro reagiert auf die Inhalte von G4, G5 und G6. Wenn sich nur in G4 etwas tut und G5 und G6 sich nicht gegenüber der letzten Berechnung verändern, ändert sich auch am Endzustand der betreffenden Zeilen nix. Du kannst ja mal in die 28er Zeile Smile einen Haltepunkt setzen und das Makro bei der nächsten Berechnung schrittweise durchgehen und die Zustände kurz anschauen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Wenn du einfach mal meinen letzten Beitrag befolgen würdest, hättest du das Problem schon gelöst.
Schöne Grüße
Berni
Top
#9
HI Berni,

bei Uwe sind keine Anführungszeichen ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
Hi André,

bei Uwe nicht ... :21:
Schöne Grüße
Berni
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste