ich habe hier im Forum Codeschnipsel für meine Aufgabe gefunden, aber leider funktioniert es noch nicht richtig.
Ich habe eine Jahresliste (pro Tag eine Spalte) mit Kalenderwochen. Und über einen Eintrag in B4 möchte ich nur die diejenigen Spalten angezeigt bekommen, die in der angegebenen Kalenderwoche liegen, z.B. Eingabe "3" in B4 soll mir alle Tage der KW3 anzeigen und den Rest ausblenden. Leider werden keine Spalten ein- bzw. ausgeblendet.. Der Code ist im richtigen Kalenderblatt hinterlegt und das Target wird auch angesprochen (per Test blau gefärbt).
Woran kann das liegen?
Schöne Grüße
Davidina11
So sieht die Datei aus:
Sub Worksheet_Change(ByVal Target As Range)
' Ziel: Kalenderwoche in B4 eingeben und dann wird nur ausgewählte KW angezeigt, alle anderen ausgeblendet
Dim rngZelle As Range, strAdr As String
Target.Font.ColorIndex = 5 'zum Testen, funktioniert
If Not Intersect(Target, [B4]) Is Nothing Then 'Wenn Eingabe in B4 erfolgte
If [B4].Value = "" Then 'Wenn B4 gelöscht wurde
Cells.Columns("C:NJ").Hidden = False 'Alle Spalten wieder einblenden
Else 'Ansonsten :
Cells.Columns("C:NJ").Hidden = True 'Alle Spalten zunächst ausblenden
Columns("C:NJ").Hidden = False 'Spalten C:NJ wieder einblenden
With Rows(5) 'Suche Wert in kompletter Zeile 5
Set rngZelle = .Find([B4].Value, lookat:=xlWhole) 'Suche nach Wert der Zelle B4
If Not rngZelle Is Nothing Then strAdr = rngZelle.Address
While Not rngZelle Is Nothing
rngZelle.EntireColumn.Hidden = False 'Spalte mit gefundenem Wert einblenden
Set rngZelle = .FindNext(after:=rngZelle) 'Weitersuchen
If rngZelle.Address = strAdr Then Set rngZelle = Nothing
Wend
End With
End If
End If
Set rngZelle = Nothing
End Sub