USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Dias úteis
Luiz
não registrado
Postada em 27/01/2005 11:04 hs   
Olá,
 
   Como faço para descobrir os dias uteis da semana atual e os dias uteis do mes atual? Grato.
     
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
Postada em 27/01/2005 13:29 hs         

Private Sub Command1_Click()
 Dim dt_Pascoa As Variant 'feriado de páscoa
 Dim dt_Carnaval As Variant 'feriado de carnaval
 Dim dt_SextaSanta As Variant 'feriado de sexta-feira santa
 Dim dt_CorpusC As Variant 'feriado corpus cristi
 Dim Data As Variant 'data informada pelo usuário
 Dim Data2 As Variant 'data informada pelo usuário
 Dim diautil As Integer 'variavel de controle -> 5 dias úteis
 Dim dataaux As Date 'data após x dias úteis (x = diautil)
 Dim Contador As Integer
 Data = Format(CDate(Text1.Text), "dd/mm/yyyy")
 Data2 = Format(CDate(Text2.Text), "dd/mm/yyyy")
 subFeriadosMoveis Year(Data), dt_Pascoa, dt_Carnaval, dt_SextaSanta, dt_CorpusC
 
diautil = 0
Contador = 0
dataaux = Data
'o -1 é para contar a data inicial
'por exemplo do dia 24/01 até dia 28/01
'contando dia 24, tem 5 dias úteis
Do While DateDiff("d", DateAdd("d", Contador - 1, Data), Data2) <> 0
 
  If (Weekday(dataaux) <> 1) And (Weekday(dataaux) <> 7) Then 'se dia não for sábado ou domingo
    If (dataaux <> dt_Pascoa) And (dataaux <> dt_Carnaval) And (dataaux <> dt_SextaSanta) And (dataaux <> dt_CorpusC) Then 'se dia não for feriado
      diautil = diautil + 1 'se for dia útil conta o dia
    End If
  End If
  Contador = Contador + 1
  dataaux = DateAdd("d", 1, dataaux)
Loop

MsgBox dataaux & " - " & diautil

End Sub

Private Sub subFeriadosMoveis(ByVal Ano As Long, ByRef dt_Pascoa As Variant, ByRef dt_Carnaval As Variant, ByRef dt_SextaSanta As Variant, ByRef dt_CorpusC As Variant)
'Esta função calcula os feriados móveis nacionais:
'Pascoa, Carnaval, Sexta-Feira Santa e CorpusC.

     Dim A, B, C, D, E, F, G, H, I, K, L, M, P, Q As Long
     A = (Ano Mod 19)
     B = Int(Ano / 100)
     C = (Ano Mod 100)
     D = Int(B / 4)
     E = (B Mod 4)
     F = Int((B + 8) / 25)
     G = Int((B - F + 1) / 3)
     H = ((19 * A + B - D - G + 15) Mod 30)
     I = Int(C / 4)
     K = (C Mod 4)
     L = ((32 + 2 * E + 2 * I - H - K) Mod 7)
     M = Int((A + 11 * H + 22 * L) / 451)
     P = Int((H + L - 7 * M + 114) / 31)
     Q = ((H + L - 7 * M + 114) Mod 31)
   
     dt_Pascoa = CDate((Q + 1) & "/" & P & "/" & Ano)
     dt_Carnaval = DateAdd("d", -47, dt_Pascoa)
     dt_SextaSanta = DateAdd("d", -2, dt_Pascoa)
     dt_CorpusC = DateAdd("d", 60, dt_Pascoa)

End Sub

 

 
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página