Kann mir jemand bei meinem Makro helfen?
Dies soll mir alle Sonntage in meinem Excelkalender (Bereich A2:L33) makieren, macht es aber nicht? Im Gegenteil, wenn ich per Hand die So-Tage markiert habe ist nach ausführen des Makros alles weiß!
'Makrolisting zum Markieren der Sonntage:
Sub Sonntage()
ActiveSheet.Unprotect
With ActiveSheet.Range(„A1:L33“)
.Interior.ColorIndex = xlNone
Set Sotag = .Find(" So", LookIn:=xlValues)
If Not Sotag Is Nothing Then
ersteAdresse = Sotag.Adress
Do
With Sotag.Interior
.ColorIndex = 0
.Pattern = xlGray25
.PatternColorIndex = 3
End With
Set Sotag = .FindNext(Sotag)
Loop While Not Sontag Is Nothing And Sotag.Adress ersteAdresse
End If
End With
'ActiveSheet.Protect
End Sub
PS: Der Kalender erstellt sich automatisch nach Eingabe der Jahreszahl in der
Zelle A1
Zelle A2 = Jan
Zelle A3:L33 = =DATUM($A$1;1;1) etc etc etc
mfg Werner
Hallo
Wenn ich das recht verstehe wird Dein Kalender erzeugt, indem automatisch mit der Funktion Datum die Monatsdaten erzeugt werden.
Wenn dem so ist, dann liegt der Fehler in der Zeile
Set Sotag = .Find(" So", LookIn:=xlValues)
Diese sucht nämlich nach dem String „So“, den es nicht gibt, da in den Zellen Zahlen abgelegt sind, die ein Datum repräsentieren.
Du könntest hier besser ans Ziel gelangen, indem Du alle Zellen durchgehst und mit der Funktion Wochentag (das VBA Äquivalent wäre noch zu finden) nach dem Sonntag suchst und da Deine Graumarkierungen setzt.
Deine manuell gesetzten Graumarkierungen sind übrigens weg, da Du am Anfang des Makros diese Formatierung für den gesamten Bereich zurücksetzt.
Viel Spaß
Thomas
Hallo Werner,
vielleicht hilft dir das weiter?
Viele Grüße
Bettina
Sub Sonntag()
ActiveSheet.Range(„A1“).Select
ActiveCell.CurrentRegion.Select
Set tabelle = ActiveCell.CurrentRegion
Reihen = tabelle.Rows.Count
Spalten = tabelle.Columns.Count
ActiveSheet.Range(„A1“).Select
For i = 0 To Reihen - 1
For j = 0 To Spalten - 1
If WeekDay(ActiveCell.Offset(i, j).Range(„A1“)) = 1 Then
MsgBox "Ich bin ein Sonntag " & ActiveCell.Offset(i, j).Range(„A1“).Value
End If
Next j
Next i
End Sub