Newsgroup: it.comp.lang.visual-basic
Titolo: Help: Settimane riferite all'anno

Come si fa a sapere dato un numero della settimana (ad esempio la 52esima
settimana dell'anno) a che mese appartiene ?
oppure il viceversa : dato il mese quali sono i numeri delle settimane
(sempre riferite all'anno) che vi appartengono?
Ringrazio anticipatamente
Saluti
Sibbia

Ciao...
prova a guardare la funzione DatePart
in base ai parametri che gli dai ti restituisce quasi tutto quello che ti
interessa su una data
(trimestre, quadrimestre, settimana etc...)
ciao
Enrico


 (sempre riferite all'anno) che vi appartengono?
1.
Tutta da verificare:
Month(DateSerial(2000,1,W*7)). Dove W e' il numero della settimana.
2.
Option Explicit
Public Sub Main( _
)
Const iLOC_ANNO As Integer = 2000
Dim i_Month     As Integer
Dim l_Date      As Long
  For i_Month = 1 To 12
    For l_Date _
      = DateValue( _
          DateSerial(iLOC_ANNO, i_Month, 1)) _
      To _
        DateValue( _
          DateSerial(iLOC_ANNO, i_Month + 1, 1)) - 1 _
      Step 7
      Debug.Print _
          Format$(Format(l_Date, "ww"), "00") & Chr$(32) _
        & Format$(l_Date, "Long Date")
    Next
  Next
End Sub
--
Ciao.
Maurizio

Purtroppo il suggerimento che mi hai dato non va bene perche' ci
sono delle settimane che cadono a cavallo di due mesi
La domanda meglio posta e' questa
Come si fa a sapere dato un numero della settimana (ad esempio 52esima
settimana dell'anno) la data d'inizio e quella di fine ?
Grazie
ciao

 settimana dell'anno) la data d'inizio e quella di fine ?
Cosi' funziona, ma ha bisogno di essere testata, soprattutto con i valori
limite (per esempio, ha problemi con l'anno 9999)  e ripulita.
Private Function booWeekDates( _
  ByVal intWeekNum As Integer _
, ByRef dateBegin As Date _
, ByRef dateEnd As Date _
, Optional ByVal varYear As Variant _
) As Boolean
Dim i_Year As Integer
  Let booWeekDates = True
  If IsMissing(varYear) Then _
    Let i_Year = Year(Date) _
      Else Let i_Year = varYear
  Let dateBegin _
    = DateSerial(i_Year, 1, intWeekNum * 7 - 7 + 1)
  Let dateBegin _
    = dateBegin - WeekDay(dateBegin, vbMonday) + 1
  Select Case True
  Case _
      DateSerial(i_Year, 1, 1 - 7) _
      <= dateBegin And dateBegin <= _
      DateSerial(i_Year - 1, 12, 31)
    Let dateBegin = DateSerial(i_Year, 1, 1)
    Let dateEnd _
      = DateSerial(i_Year, 1, (intWeekNum + 1) * 7 - 7 + 1)
    Let dateEnd _
      = dateEnd - WeekDay(dateEnd, vbMonday)
  Case _
      DateSerial(i_Year, 1, 1) _
      <= dateBegin And dateBegin <= _
      DateSerial(i_Year, 12, 31)
    Let dateBegin = dateBegin
    Let dateEnd = dateBegin + 7 - 1
    If Year(dateEnd) = i_Year + 1 Then _
      Let dateEnd = DateSerial(i_Year, 12, 31)
  Case Else
    Let booWeekDates = False
  End Select
End Function
--
Ciao.
Maurizio

Scusate se mi intrometto, leggendo le domande ho notato quella che segue
"Aiuto nelle settimane dell'anno", senza accorgermi che la discussione era
sopra...
Provate a vedere questa funzione:
Dim data As Date
Dim settimana As Integer
data = #1/1/2000#
settimana = 3
MsgBox "Inizio: " & DateAdd("ww", settimana, data)
MsgBox "Fine: " & DateAdd("d", -1, DateAdd("ww", settimana + 1, data))
Controlla per gli anni bisestili, ma dovrebbe funziare....
------
Ciao
Sabba