Was, bitte soll der terminus technicus (und der wird auch noch abgeschrieben)
With ActiveSheet
.Range(Columns(Ab), Columns(Bis)).EntireColumn.Hidden = False 'zurücksetzen
denn auch mit
With ActiveSheet
.Range(.Columns(18), .Columns(300)).EntireColumn.Hidden = False 'zurücksetzen
bedeutet das für den Interpreter nimm einfach die Spalte(n) des gerade aktiven Arbeitsblattes - ergo ist Alles außer "Columns" überflüssig
und ein .EntireColumns noch hinterher = nimm die Straße in der Straße (es sei denn, du zielst aus jeder Lebenslage auf ein ganz bestimmtes,
nicht gerade aktives Register, dass du dann auch explizit benennen musst).
Die Weekday Funktion kennt einen 2. Parameter und mit dem stellst du den Tag 1 der Woche ein (für eine Abfrage auf < 3 musst du Samstag als 1. Wochentag einstellen).
Sub SaSo()
'leise weinend angenommen im Bereich $R$11:$KN$11
'steht als Ergebnis einer Formel ein numerischer Wert,
'den Excel als Datum interpretiert
Dim c As Range
With Columns("R:KN")
.Hidden = False
For Each c In .Rows(11).Cells
c.EntireColumn.Hidden = Weekday(c, 7) < 3
Next c
End With
End Sub
Sub SoSa()
'entweder - oder
Dim c As Range
For Each c In Columns("R:KN").Rows(11).Cells
If Weekday(c.Value, 2) > 5 Then
c.EntireColumn.Hidden = True
Else
c.EntireColumn.Hidden = False
End If
Next c
End Sub
|