Bem kara, vc tem que usar a função weekday para determinar quando é o domingo (primeiro dia da semana). E sempre ir testando, por exemplo, o primeiro dia sempre será o dia 1, então vc ve o weekday dele, faz um loop até que weekday retorne domingo, então ficaria assim:
Primeira semana: 01 até 04 (exemplo)
Segunda semana: 05 até 11
E por ai vai, vou por aqui um código que eu uso num relatorio semanal de vendas que eu tenho, só que como é uma loja no shoping, ele considera todos os dias, e a semana pra eles começa na segunda e termina no domingo. O form tem um combo pra escolher o mes, um para escolher o ano, ele joga o resultado num outro combo.
Vai ai, qualquer coisa da uma testada.
Sub AchaSemana()
cmbSemana.Clear
If cmbMes.ListIndex = -1 Then Exit Sub
If cmbAno.ListIndex = -1 Then Exit Sub
xDataI = "01/" & cmbMes.ItemData(cmbMes.ListIndex) & "/" & cmbAno.Text
XdataF = xDataI
Do While True
If Weekday(XdataF) = 1 Then
CarregaData
XdataF = XdataF + 1
xDataI = XdataF
If Month(XdataF) <> cmbMes.ItemData(cmbMes.ListIndex) Then Exit Do
Else
XdataF = XdataF + 1
End If
If Month(XdataF) <> cmbMes.ItemData(cmbMes.ListIndex) Then
XdataF = XdataF - 1
CarregaData
Exit Do
End If
Loop
End Sub
Xdatai e Xdataf são variaveis do tipo date,