Lo potresti fare con la funzione WeekDay.
Ti ho fatto un esempio:
codice:
Dim Cont1 As Integer
Dim Data1 As Date
Dim NumTemp1 As Byte
Dim StrTemp1 As String
Dim Giorni(6, 4) As Byte
Dim NumGiorni(6, 0) As Byte
Data1 = CDate(Now)
For Cont1 = 1 To GiorniDelMese(Month(Data1), Year(Data1))
Data1 = CDate(Format(Cont1, "00") & "/" & CStr(Month(Now)) & "/" & CStr(Year(Now)))
NumTemp1 = (Weekday(Data1) - 1)
Giorni(NumTemp1, NumGiorni(NumTemp1, 0)) = Cont1
NumGiorni(NumTemp1, 0) = NumGiorni(NumTemp1, 0) + 1
Next Cont1
Adesso se vuoi sapere ad esempio quanti e quali sono i giovedì puoi fare così:
codice:
MsgBox CStr(NumGiorni(4, 0)) 'Numero di giovedì
For Cont1 = 0 To (NumGiorni(4, 0) - 1)
StrTemp1 = StrTemp1 & CStr(Giorni(4, Cont1)) & " "
Next Cont1
StrTemp1 = RTrim(StrTemp1) 'Tutti i giovedì del mese in StrTemp1
MsgBox StrTemp1
Serve però anche una funzione che restituisca il numero di giorni del mese scelto:
codice:
Private Function GiorniDelMese(ByVal Mese As Byte, ByVal Anno As Integer) As Byte
Select Case Mese
Case Is = 1
GiorniDelMese = 31
Case Is = 2
If Anno Mod 4 = 0 Then
GiorniDelMese = 29
Else
GiorniDelMese = 28
End If
Case Is = 3
GiorniDelMese = 31
Case Is = 4
GiorniDelMese = 30
Case Is = 5
GiorniDelMese = 31
Case Is = 6
GiorniDelMese = 30
Case Is = 7
GiorniDelMese = 31
Case Is = 8
GiorniDelMese = 31
Case Is = 9
GiorniDelMese = 30
Case Is = 10
GiorniDelMese = 31
Case Is = 11
GiorniDelMese = 30
Case Is = 12
GiorniDelMese = 31
Case Else
GiorniDelMese = 0
End Select
End Function
Ciao