Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wochentag in VBA abfragen

Forumthread: Wochentag in VBA abfragen

Wochentag in VBA abfragen
31.12.2002 00:13:53
Franz
Hallo Fachleute,

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

Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 00:18:37
Boris
Hallo 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

Re: Wochentag in VBA abfragen
31.12.2002 00:19:45
r.sch.
Hi Franz
setze für die einzelnen Tage ... =1 .. usw bis 7
Gruß
Reinhard
Re: Wochentag in VBA abfragen
31.12.2002 00:31:54
Franz
Hallo 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

Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 00:46:08
Thomas Scher
Hallo Franz,
warum nimmst du denn nicht eine Bedingte Formatierung ??

Wenn Zellwert gleich "Samstag" dann Rot oder so ??

Gruß

Thomas

Re: Wochentag in VBA abfragen
31.12.2002 00:52:36
Boris
Hallo Franz,

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

Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 01:01:17
Franz
Hallo Thomas,

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

Re: Wochentag in VBA abfragen
31.12.2002 01:09:22
Franz
Hallo Boris,

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 !?!
Die Formatierung der Zelle ist
Was mache ich falsch???

Gruß Franz


Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 01:13:14
Franz
Hallo Boris,

Nachtrag, ist was abgeschnitten: die Formatierung ist:
Benutzerdefiniert : "T."

Franz

Re: Wochentag in VBA abfragen
31.12.2002 09:04:16
andre
hallo franz,
steht dort auch wirklich ein datum bzw. eine Zahl?
der fehler kommt bei mir (ex8) nur, wenn dort (noch) andere zeichen stehen.
gruss andre
Re: Wochentag in VBA abfragen
31.12.2002 09:15:29
Franz
Hallo Andre,

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

Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 09:43:54
andre
hallo franz,
hatte auch =heute() drin, und damit gings. aber poste mal deine formel, sonst kann ich nichts weiter dazu sagen.
gruss andre
Re: Wochentag in VBA abfragen
31.12.2002 10:01:32
Franz
Hallo Andre,

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

Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 10:38:36
Boris
Hallo 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

Re: Wochentag in VBA abfragen
31.12.2002 10:40:52
andre
hallo franz,
läuft.

gruss andre
Re: Wochentag in VBA abfragen
31.12.2002 10:55:59
Franz
Hallo 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

Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 10:58:32
Franz
Hallo Andre,

danke, ich versuche es nochmal. Kann jetzt grad leider nicht (hab ein paar Kinder zu versorgen :-)), melde mich später wieder.

Gruß Franz

Re: Wochentag in VBA abfragen
31.12.2002 11:25:47
Franz
Hallo Andre,

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

Anzeige
Re: Wochentag in VBA abfragen
31.12.2002 11:41:55
andre
hallo franz,
da brauch ich mal das blatt dazu. maile es mir mal bitte. der code alleine dürfte i.o. sein.
gruss andre

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wochentag in VBA abfragen und automatisch einfärben


Schritt-für-Schritt-Anleitung

  1. 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.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. 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.

  4. 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
  5. 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.


Häufige Fehler und Lösungen

  • 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.


Alternative Methoden

  • 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

Praktische Beispiele

  • 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

Tipps für Profis

  • 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.


FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige