folgende VBA-Zeile ist falsch, aber sie zeigt vielleicht was ich rauskriegen möchte:
IF Wochentag von Cells(t,m) gleich Sonntag THEN
Kann mir bitte jemand sagen, wie das richtig heißen muss?
Danke im Voraus
Gruß Franz
folgende VBA-Zeile ist falsch, aber sie zeigt vielleicht was ich rauskriegen möchte:
IF Wochentag von Cells(t,m) gleich Sonntag THEN
Kann mir bitte jemand sagen, wie das richtig heißen muss?
Danke im Voraus
Gruß Franz
in A5 steht dein Datum:
7 ist gleich Sonntag, wenn du den Parameter bei Weekday auf 2 stellst. Ansonsten ist Sonntag 1.
Gruß Boris
vielen Dank für Deine Antwort. Ich habe nicht ein Datumsfeld, sondern einen ganzen Kalender und möchte per VBA den Samstag und den Sonntag einfärben. Kannst Du mir da bitte weiterhelfen?
Gruß Franz
Wenn Zellwert gleich "Samstag" dann Rot oder so ??
Gruß
Thomas
also das war aus deiner Frage nun wirklich nicht ersichtlich.
Prinzipiell geht das genauso mit dem Makro:
Sub test()
If Weekday(Cells(x,y), 2) > 5 Then
Cells(x,y).Interior.Colorindex = 3
End If
End Sub
und das ganze in eine For-Next-Schleife einbinden.
Aber der Hinweis ist ja bereits gekommen:
Nutze einfach die bedingte Formatierung.
Gruß Boris
aus zwei Gründen: erstens wird der Kalender ohnehin durch ein Makro erzeugt mit noch ein paar anderen Dingen dazu. Und zweitens habe ich dann die drei Möglichkeiten der bedingten Formatierung frei für anderes.
Gruß Franz
tut mir leid, wenn ich nicht klar geschrieben habe. Aber ich habe trotzdem noch ein Problem: ich bekomme jetzt in der Zeile
If Weekday(Cells(t, m), 2) > 5 Then
die Fehlermeldung: Typen unverträglich.
Mit der bedingten Formatierung klappts doch auch !?! Gruß Franz
Die Formatierung der Zelle ist
Was mache ich falsch???
Nachtrag, ist was abgeschnitten: die Formatierung ist:
Benutzerdefiniert : "T."
Franz
Danke für Deine Antwort. Es steht tatsächlich nur die Zahl und der Punkt drin, definiert als: Benutzerdefiniert "T.": 1. | 2. | 3. usw. Allerdings steht natürlich die Formel drin, die das Datum berechnet. Kann es daran liegen?
Gruß
Franz
Das Jahr steht in A1.
In der C2 Zelle des 1. Januar steht: =DATUM($A$1;1;1)
In C3 für den 2. Januar steht: =+C2+1 usw.
Gruß Franz
geh unter Format - bedingte Formatierung.
Markiere C2 bis C367 (oder wie weit auch immer), beginnend bei C2.
Formel ist:
=WOCHENTAG(C2;2)>5 und Format zuweisen. Fertig.
Gruß Boris
ja ist klar, das klappt ja auch. Aber ich habe ja versucht das mit VBA zu machen, damit die 3 Bedingungen unter Bedingte Formatierung für anderes frei bleiben. Und da habe ich eben bei Deinem gestrigen Vorschlag die Meldung Typen unverträglich bekommen. Trotzdem danke, ich versuch's weiter.
Gruß Franz
danke, ich versuche es nochmal. Kann jetzt grad leider nicht (hab ein paar Kinder zu versorgen :-)), melde mich später wieder.
Gruß Franz
klappt nicht, bekomme nach wie vor die Meldung: Typen unverträglich und markiert ist dabei die Zeile: If Weekday(Cells(t - 1, m), 2) > 5 Then.
Hier mal mein kompletter Code, vielleicht findest Du ja den Fehler:
For t = 3 To 58 Step 5 ' Schleife für Monate
For m = 3 To 33 ' Schleife für Tage pro Monat
Cells(t, m).Font.ColorIndex = -4105 ' Feiertagszeilen Textfarbe automatisch
Cells(t - 1, m).Interior.ColorIndex = -4142 ' Datumszeilen Hintergrundfarbe automatisch
Cells(t, m).Interior.ColorIndex = -4142 ' Feiertagszeilen Hintergrundfarbe automatisch
Cells(t, m).Font.FontStyle = "Fett" ' Feiertagszeilen Schriftschnitt
Cells(t + 1, m).Interior.ColorIndex = -4142 ' Urlaubszeilen Hintergrundfarbe automatisch
If Weekday(Cells(t - 1, m), 2) > 5 Then
Cells(t - 1, m).Interior.ColorIndex = 3
End If
Next m ' Schleifenzähler (For m)
Next t ' Schleifenzähler (For t)
Gruß Franz
Datum eingeben: Stelle sicher, dass in deiner Excel-Tabelle die Datumswerte korrekt eingegeben sind. Zum Beispiel kannst du in Zelle C2 =DATUM($A$1;1;1) verwenden, wobei A1 das Jahr enthält.
VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
Modul erstellen: Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" klickst und "Einfügen" > "Modul" wählst.
Code eingeben: Kopiere den folgenden VBA-Code in das Modul:
Sub WochentagFarbe()
Dim t As Integer, m As Integer
For t = 3 To 58 Step 5 ' Schleife für Monate
For m = 3 To 33 ' Schleife für Tage pro Monat
If Weekday(Cells(t - 1, m), 2) > 5 Then ' Wochentag ermitteln
Cells(t - 1, m).Interior.ColorIndex = 3 ' Sonntag/Samstag einfärben
End If
Next m
Next t
End Sub
Makro ausführen: Schließe den VBA-Editor und führe das Makro aus (ALT + F8), um die Zellen für Samstag und Sonntag automatisch einzufärben.
Typen unverträglich: Wenn du eine Fehlermeldung erhältst, die besagt "Typen unverträglich", überprüfe, ob die Zelle, auf die du zugreifst, tatsächlich ein Datum oder eine Zahl enthält. Möglicherweise sind dort auch andere Zeichen vorhanden.
Falscher Wochentag: Achte darauf, dass du den richtigen Parameter für Weekday verwendest. Der Wert 2 gibt an, dass die Woche am Montag beginnt, was bedeutet, dass Sonntag den Wert 7 hat.
Bedingte Formatierung: Du kannst auch die bedingte Formatierung in Excel verwenden, um Wochentage farblich hervorzuheben. Gehe zu Format > Bedingte Formatierung und verwende die Formel =WOCHENTAG(C2;2)>5, um Samstage und Sonntage zu formatieren.
Excel-Funktionen: Nutze Funktionen wie TEXT oder WOCHENTAG, um Wochentage als Text oder Zahl auszugeben. Zum Beispiel:
=TEXT(A1;"dddd") ' Gibt den Wochentag als Text zurück
Samstags- und Sonntagsfärbung:
Wenn du in einer Kalenderansicht Samstage und Sonntage automatisch einfärben möchtest, kannst du den oben genannten VBA-Code verwenden. Dies ist besonders nützlich für die Planung von Projekten oder zur Übersicht von Arbeitszeiten.
Abfrage des Wochentags:
Um den Wochentag eines bestimmten Datums zu ermitteln, kannst du folgenden Code verwenden:
Sub WochentagAbfragen()
Dim wTag As Integer
wTag = Weekday(Cells(1, 1).Value, 2) ' Zelle A1 enthält das Datum
MsgBox "Der Wochentag ist: " & wTag
End Sub
Verwende Konstanten: Anstelle von festen Werten wie 3 oder 5, definiere Konstanten für die Wochentage, um deinen Code lesbarer zu machen.
Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinen VBA-Skripten, um unerwartete Fehler abzufangen und die Benutzerfreundlichkeit zu verbessern.
Optimierung der Schleifen: Überlege, ob du die Schleifen optimieren kannst, indem du nur relevante Zellen bearbeitest, um die Laufzeit des Makros zu verkürzen.
1. Was ist heute für ein Wochentag?
Du kannst den Wochentag für das heutige Datum mit der Funktion =TEXT(HEUTE();"TTTT") in Excel ermitteln.
2. Wie kann ich den Wochentag als Text ausgeben?
Verwende die Funktion TEXT in Kombination mit WOCHENTAG, um den Wochentag als Text auszugeben. Beispiel: =TEXT(A1;"dddd"), wobei A1 das Datum enthält.
3. Wie kann ich Wochentage in VBA abfragen?
Nutze die Weekday Funktion in VBA, um den Wochentag aus einem Datum zu ermitteln. Beispiel: Weekday(Cells(t, m), 2) gibt den Wochentag zurück, wobei Montag als 1 gezählt wird.