Im Folgenden werden wir ein Programm in Excel VBA suchen, die die Anzahl der Wochentage zwischen zwei Daten berechnet.

Wochentag: Montag, Dienstag, Mittwoch, Donnerstag und Freitag.

Situation:

Weekdays in Excel VBA

Hinweis: Daten sind in US-Format. Monate erste Days Zweite. Diese Art von Format ist abhängig von Ihrer Windows-Ländereinstellungen.

  1. Zuerst erklären wir fünf Variablen. date1 vom Typ Datum, date2 vom Typ Datum, dateToCheck vom Typ Datum, daysBetween vom Typ Integer, Wochentag vom Typ Integer und i vom Typ Integer.

Dim date1 As Date, date2 As

Date, dateToCheck As Date

Dim daysBetween As Integer, weekdays As Integer, i As Integer
  1. Wir initialisieren vier Variablen. Wir verwenden die Funktion DateDiff die Variable daysBetween zu initialisieren. Diese Funktion hat drei Argumente.

Wir füllen in „d“ für das erste Argument, da wir die Anzahl der Tage zwischen Datum1 und date2 wollen.

weekdays = 0

date1 = Range("B2")

date2 = Range("B3")

daysBetween = DateDiff("d", date1, date2)
  1. Wir müssen für jedes Datum zwischen Datum1 und date2 (einschließlich date1 und date2), ob das Datum ein Wochentag ist oder nicht überprüfen. Wenn ja, wir Wochentag um 1 erhöht werden wir eine Schleife For Next verwenden.

For i = 0 To daysBetween
  1. Wir verwenden die Funktion DateAdd jedes Datum erhalten wir überprüfen müssen. Diese Funktion hat drei Argumente. Wir füllen in „d“ für das erste Argument, da wir Tag hinzufügen möchten, i für das zweite Argument, und date1 für das dritte Argument, da wir wollen, i Tage date1 hinzuzufügen. Auf diese Weise Excel VBA kann jeden Tag zwischen date1 überprüfen und date2 mit date1 starten. Fügen Sie die folgende Codezeile:

dateToCheck = DateAdd("d", i, date1)

Beispiel: für i = 3, Excel VBA prüft date1 + 3 Tage.

  1. Als nächstes benutzen wir die Weekday-Funktion (Build in Funktion) zu prüfen, ob dateToCheck ein Wochentag ist oder nicht. Die Weekday-Funktion gibt 1 für einen Sonntag und 7 für einen Samstag. Deshalb haben wir nur den variablen Wochentag erhöhen, wenn Weekday (dateToCheck) gleich nicht auf 1 und nicht gleich 7 (<> Mittel nicht gleich). Die folgenden Codezeilen den Job zu erledigen.

If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then

weekdays = weekdays + 1

End If
  1. Vergessen Sie nicht, um die Schleife zu schließen.

Next i
  1. Schließlich zeigen wir die Anzahl der Wochentage eine MsgBox verwenden. Wir verwenden den Operator & verketten (verbinden) zwei Strings. Obwohl der Woche ist kein String es hier funktioniert.

MsgBox weekdays & " weekdays between these two dates"
  1. Setzen Sie Ihr Makro in einer Befehlsschaltfläche und testen.

Ergebnis:

Weekdays Result