QUANTAS SEMANAS NO MES

LUIS.FLAVIO 04/01/2011 20:29:47
#361111
Pessoal preciso saber a quantidade de semana no mês, alguem teria alguma função que faça esse cálculo?

Pra vocês terem idéia da questão tenho que fazer um planejamento de meta semanal que vai de Segunda a Domingo.

No mês de Janeiro as metas ficariam assim:

Dia 1 as Dia 2 (Metas para a Semana 1)
Dia 3 ao Dia 9 (Metas para a Semana 2)
Dia 10 ao Dia 16 (Metas para a Semana 3)
Dia 17 ao Dia 23 (Metas para a Semana 4)
Dia 24 ao Dia 30 (Metas para Semana 5)
Dia 31 (Metas para a Semana 6) So que somente para o dia 31

Então o sistema teria que me retornar 6 semanas que contém o Mês de Janeiro, não me importa a quantidade de dias que tem na semana, mas preciso fechar de Segunda a Domingo.


Abraço
MARCELO.TREZE 04/01/2011 21:52:31
#361120
Resposta escolhida
um POG muito louco

Private Sub Command1_Click()

Dim MesAno As String
Dim sep() As String
Dim Planejamento As String
Dim SemanasNoMes As Integer
Dim UltimoDiaDoMes As Integer
Dim Semana As Integer
SemanasNoMes = 0
MesAno = [Ô]01/2011[Ô]
sep = Split(MesAno, [Ô]/[Ô])
UltimoDiaDoMes = Day(DateAdd([Ô]d[Ô], -1, DateSerial(sep(1), sep(0) + 1, 1)))
For f = 1 To UltimoDiaDoMes
Semana = Weekday(DateSerial(CInt(sep(1)), CInt(sep(0)), f))
If Semana = 7 And SemanasNoMes = 0 Then
SemanasNoMes = SemanasNoMes + 1
Planejamento = Planejamento & [Ô]1 a [Ô] & f + 1 & [Ô] semana [Ô] & SemanasNoMes & vbCrLf
End If
If Semana = 1 And SemanasNoMes > 0 Then
SemanasNoMes = SemanasNoMes + 1

Planejamento = Planejamento & f + 1 & [Ô] a [Ô] & IIf((f + 7) > UltimoDiaDoMes, UltimoDiaDoMes, f + 7) & [Ô] semana [Ô] & SemanasNoMes & vbCrLf
End If
Next f
MsgBox Planejamento
End Sub
LUIS.FLAVIO 04/01/2011 22:04:47
#361121
Marcelo show de bola grande lógica essa sua, estou postando aqui a função somente com os itens necessários para a função:

  
Function getWeeksOfMonth(Year As Single, Month As Single) As Single

Dim MesAno As String
Dim sep() As String
Dim SemanasNoMes As Integer
Dim UltimoDiaDoMes As Integer
Dim Semana As Integer

SemanasNoMes = 0
MesAno = Month & [Ô]/[Ô] & Year

sep = Split(MesAno, [Ô]/[Ô])

UltimoDiaDoMes = Day(DateAdd([Ô]d[Ô], -1, DateSerial(sep(1), sep(0) + 1, 1)))

For f = 1 To UltimoDiaDoMes
Semana = Weekday(DateSerial(CInt(sep(1)), CInt(sep(0)), f))
If Semana = 7 And SemanasNoMes = 0 Then
SemanasNoMes = SemanasNoMes + 1
End If
If Semana = 1 And SemanasNoMes > 0 Then
SemanasNoMes = SemanasNoMes + 1
End If
Next f

getWeeksOfMonth = SemanasNoMes

End Function
LUIS.FLAVIO 05/01/2011 11:58:55
#361201
Pessoal agora precisando de uma função que conta quantos dias tem a semana!

Um grande abraço
MARCELO.TREZE 05/01/2011 12:03:54
#361202
como assim? ela não tem sete dias?

LUIS.FLAVIO 05/01/2011 12:06:58
#361203
Marcelo seguinte,

Pense no mês de Janeiro de 2011,

Dia 1° começou no Sabado então a primeira semana terá apenas 2 dias pois (1 = Sabado, 2 = Domingo):
Dia 31° que será a sexta semana téra apenas 1 dias;

Entendeu?

Vlw
Tópico encerrado , respostas não são mais permitidas