Excel: per VBA in Abhängigkeit von Wert Zeilen aus- oder einblenden
Hallo zusammen,
ich habe eine Excel-Tabelle, in der ich in einer Zelle ein Datum stehen habe.
Nun würde ich gerne folgendes lösen:
Ist das Datum in der Zelle = das heutige Datum, sollen die Zeilen 7 und 13 ausgeblendet werden.
Zeitgleich soll der Inhalt der Zellen A8 bis A12 in "1.", "2.", "3.", "4." und "5." geändert werden (war vorher 2. bis 6.).
Ist das Datum nicht das Tagesdatum, sollen die Zeilen eingeblendet bleiben (bzw. werden, falls sie es nicht sind).
Kann doch eigentlich nicht so schwer sein, oder?
Viele Grüße
Philipp
ich habe eine Excel-Tabelle, in der ich in einer Zelle ein Datum stehen habe.
Nun würde ich gerne folgendes lösen:
Ist das Datum in der Zelle = das heutige Datum, sollen die Zeilen 7 und 13 ausgeblendet werden.
Zeitgleich soll der Inhalt der Zellen A8 bis A12 in "1.", "2.", "3.", "4." und "5." geändert werden (war vorher 2. bis 6.).
Ist das Datum nicht das Tagesdatum, sollen die Zeilen eingeblendet bleiben (bzw. werden, falls sie es nicht sind).
Kann doch eigentlich nicht so schwer sein, oder?
Viele Grüße
Philipp
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 252832
Url: https://administrator.de/forum/excel-per-vba-in-abhaengigkeit-von-wert-zeilen-aus-oder-einblenden-252832.html
Ausgedruckt am: 17.04.2025 um 22:04 Uhr
10 Kommentare
Neuester Kommentar
Hallo Phillip,
im Beispiel steht dein Datum in Zelle A1
Grüße Uwe
im Beispiel steht dein Datum in Zelle A1
Sub CheckDate()
Dim ws As Worksheet
Set ws = Sheets(1)
With ws
'Wenn Zelle A1 = Heutiges Datum dann
If .Range("A1").Value = Date Then
'Neue Werte eintragen
cnt = 1
For i = 8 To 12
.Range("A" & i).Value = cnt & "."
cnt = cnt + 1
Next
'Zeilen 7 und 13 ausblenden
.Rows(7).Hidden = True
.Rows(13).Hidden = True
Else
'Zeilen einblenden
.Rows(7).Hidden = False
.Rows(13).Hidden = False
End If
End With
End Sub
Zitat von @philbo20:
liegt es daran, dass in der Zelle mit dem Datum eine Funktion steckt, die das Datum von einem anderen Tabellenblatt ermittelt???
ist oben dahingehend angepasst. Ich gehe davon aus das deine Zelle aber das Datumsformat hat ...liegt es daran, dass in der Zelle mit dem Datum eine Funktion steckt, die das Datum von einem anderen Tabellenblatt ermittelt???
Zudem sollte nicht Zeile 7 bis 13 ausgeblendet werden, sondern nur 7 und 13.
OK das hatte ich missverstanden, sorry. Ist ebenfalls oben angepasst...Grüße Uwe
Zitat von @philbo20:
hmm irgendwie passiert gar nix, wenn ich den Code einfüge. Zwar keine Fehlermeldung, aber es wird auch nix ein oder
ausgeblendet.
Hast du das Sheet angepasst (Zeile 3) auf dem dies passieren, soll, läuft hier nämlich einwandfrei !hmm irgendwie passiert gar nix, wenn ich den Code einfüge. Zwar keine Fehlermeldung, aber es wird auch nix ein oder
ausgeblendet.
Ich habe zum Testen schonmal "If .Range("A1").Value = "23.10.2014"" eingetragen, allerdings passiert
Ist deine Datumszelle als Datum oder als Text formatiert ? Ich gehe hier vom Datumsformat aus ...Zitat von @philbo20:
Nee, daran wird es wohl liegen.
Gebe ich die Nummer an, oder den Namen des Blatts?
Also z.B. Set ws = sheets("Test") ?
Ja genau entweder als Text oder die Positionsnummer des Blattes.Nee, daran wird es wohl liegen.
Gebe ich die Nummer an, oder den Namen des Blatts?
Also z.B. Set ws = sheets("Test") ?
Die Zelle ist als Datum formatiert. Würde .Value nicht mit Text funktionieren?
Nein, du müstest den Vergleich dann aber nicht mit Date machen sondern z.B. so.Range("A1").Value = Format(Date, "dd.mm.yyyy")
Zitat von @philbo20:
Danke für deine Hilfe...es hat soweit jetzt funktioniert.
Aber komischer Weise nur, wenn ich im Codeeditor auf "ausführen" klicke bzw F5 drücke...
woran liegt das denn jetzt noch?? Hast du eine Idee.
das hast du ja nicht gesagt das du diese Funktion so haben wolltest Danke für deine Hilfe...es hat soweit jetzt funktioniert.
Aber komischer Weise nur, wenn ich im Codeeditor auf "ausführen" klicke bzw F5 drücke...
woran liegt das denn jetzt noch?? Hast du eine Idee.
(In Zeile 3 die Zelle anpassen auf dessen Änderungen die Überprüfung stattfinden soll):
Private Sub Worksheet_Change(ByVal Target As Range)
'Range bei dem eine Änderung etwas bewirken soll
Set changeRange = Range("A1")
If Not Application.Intersect(changeRange, Target) Is Nothing Then
CheckDate
End If
End Sub
Sub CheckDate()
Dim ws As Worksheet
Set ws = Sheets(1)
With ws
'Wenn Zelle A1 = Heutiges Datum dann
If .Range("A1").Value = Date Then
'Neue Werte eintragen
cnt = 1
For i = 8 To 12
.Range("A" & i).Value = cnt & "."
cnt = cnt + 1
Next
'Zeilen 7 und 13 ausblenden
.Rows(7).Hidden = True
.Rows(13).Hidden = True
Else
'Zeilen einblenden
.Rows(7).Hidden = False
.Rows(13).Hidden = False
End If
End With
End Sub