VBA Weekday

Funzione giorno della settimana VBA di Excel

Il giorno della settimana in VBA è una funzione di data e ora che viene utilizzata per identificare il giorno della settimana di una determinata data purché come input, questa funzione restituisce un valore intero compreso tra 1 e 7, c'è un argomento opzionale fornito a questa funzione che è il primo giorno della settimana, ma se non forniamo il primo giorno della settimana, la funzione assume la domenica come primo giorno della settimana per impostazione predefinita.

Possiamo dire il numero del giorno della settimana guardando una data particolare? Sì, possiamo indicare il numero del giorno di quella settimana a seconda del giorno di inizio della settimana. Nelle normali funzioni del foglio di lavoro, abbiamo una funzione chiamata WEEKDAY in Excel per indicare il numero della settimana per una data particolare. Anche in VBA abbiamo la stessa funzione per trovare la stessa cosa.

Cosa fa la funzione Weekday?

La funzione Weekday restituisce il numero del giorno della data fornita nella settimana. Ad esempio, se hai date dal 01 aprile al 07 aprile e se vuoi sapere il giorno della data 05 aprile se il giorno di inizio della settimana è da lunedì, è il 5 ° giorno.

Per trovarlo abbiamo la stessa funzione "Giorno della settimana" in un foglio di lavoro e in VBA. Di seguito è riportata la sintassi della funzione.

Data: per quale data stiamo cercando di trovare il giorno della settimana. Questa dovrebbe essere una data corretta con il formato corretto.

[Primo giorno della settimana]: per determinare il giorno della settimana della data fornita, dobbiamo menzionare qual è il primo giorno della settimana. Per impostazione predefinita, VBA considera "lunedì" come giorno di inizio della settimana. Oltre a questo, possiamo fornire anche i seguenti giorni.

Esempi

Puoi scaricare questo modello Excel della funzione VBA WeekDay qui - Modello Excel della funzione VBA WeekDay

Esempio 1

Per iniziare il procedimento, vorrei iniziare con un semplice esempio prima. Ora proveremo a trovare il giorno della settimana per la data "10-aprile-2019".

Passaggio 1: definire la variabile come stringa

Codice:

 Sub Weekday_Example1 () Dim k As String End Sub 

Passaggio 2: assegna valore alla variabile

Assegnare il valore alla variabile “k” applicando la funzione WEEKDAY.

Codice:

 Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub 

Passaggio 3: immettere la data nella funzione

La data che stiamo testando qui è "10-apr-2019", quindi passa la data come "10-apr-2019".

Codice:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019" End Sub 

Passaggio 4: mostra il valore della variabile in MsgBox

Per impostazione predefinita, considera il primo giorno della settimana "lunedì", quindi ignora questa parte. Chiudere la staffa. Nella riga successiva mostra il valore della variabile "k" nella finestra di messaggio VBA.

Codice:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019") MsgBox k End Sub 

Ok, abbiamo finito.

Se eseguiamo il codice otterremo il risultato come “4” perché a partire da domenica la data prevista (10-apr-2019) cade il 4 ° giorno della settimana.

Nota: il giorno di inizio della settimana del mio sistema è "domenica".

Allo stesso modo, se si modifica il giorno di inizio della settimana, esso continua a variare. Di seguito è riportata una riga di esempio per lo stesso.

Codice:

k = Weekday ("10-Apr-2019", vbMonday) "Restituisce 3 k = Weekday (" 10-Apr-2019 ", vbTuesday)" Restituisce 2 k = Weekday ("10-Apr-2019", vbWed Wednesday) "Restituisce 1 k = giorno della settimana (" 10-apr-2019 ", vbTh Thursday)" Restituisce 7 k = giorno della settimana ("10-apr-2019", vbFriday) "Restituisce 6 k = giorno della settimana (" 10-apr-2019 ", vbSaturday)" Restituisce 5 k = Weekday ("10-Apr-2019", vbSunday) "Restituisce 4 

Esempio # 2: arriva se la data è nel fine settimana o no

Supponiamo di avere una data come la seguente e di voler trovare la data del prossimo fine settimana, quindi possiamo usare la funzione GIORNO.SETTIMANA per arrivare ai risultati.

Dobbiamo usare WEEKDAY con condizione IF e loop per arrivare al risultato. Ho scritto il codice per farti andare riga per riga per ottenere la logica.

Codice:

 Sub Weekend_Dates () Dim k As Integer For k = 2 To 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 2 Then Cells (k, 2) .Value = Cells (k, 1) + 4 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 3 Then Cells (k, 2) .Value = Cells (k, 1) + 3 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 4 Quindi Cells (k, 2) .Value = Cells (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "Questo è effettivamente il fine settimana Data "End If Next k End Sub 

Questo arriverà ai risultati di seguito.

Guarda le celle B6 e B7 abbiamo ottenuto il risultato come "Questa è effettivamente la data del fine settimana" perché le date "04-maggio-2019" e "06-aprile-2019" sono in realtà date del fine settimana, quindi non è necessario mostrare la data del fine settimana per le date del fine settimana. Per impostazione predefinita, otteniamo il risultato come questo.