®ogerVB
|
OSASCO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/08/2005 16:26 hs
Alguém tem alguma função que me informa se a data digitada é ou não um dia útil, e se não for, procurar o dia útil mais próximo!!! Obrigado!!!
|
|
|
|
Martini
|
PAROBÉ RS - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/08/2005 18:31 hs
eu peguei um exemplo que eu tinha para encontrar os próximos 5 dias úteis após uma data (troquei 5 por 1 na linha "Do While diautil < 1 ") 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 diautil As Integer 'variavel de controle -> 5 dias úteis Dim dataaux As Date 'data após x dias úteis (x = diautil) Data = Format(CDate(Text1.Text), "dd/mm/yyyy") subFeriadosMoveis Year(Data), dt_Pascoa, dt_Carnaval, dt_SextaSanta, dt_CorpusC diautil = 0 dataaux = Data Do While diautil < 1 dataaux = DateAdd("d", 1, dataaux) 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 Loop MsgBox dataaux 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
|
|
|
|
Postada em 16/08/2005 11:37 hs
Legal essa função... Realmente ele te informa o próximo dia útil, mas e para eu saber se o dia que foi digitado é ou não um dia útil, pois eu gostaria que ele só me informasse o próximo dia útil, se aque que foi digitado não for um.
Obrigado!!!!
|
|
|
|
Postada em 16/08/2005 13:19 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 diautil As Integer 'variavel de controle -> 5 dias úteis Dim dataaux As Date 'data após x dias úteis (x = diautil) Data = Format(CDate(Text1.Text), "dd/mm/yyyy") subFeriadosMoveis Year(Data), dt_Pascoa, dt_Carnaval, dt_SextaSanta, dt_CorpusC diautil = 0 dataaux = Data 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 = 1 'se for dia útil conta o dia End If End If If diautil = 1 Then MsgBox "A data " + Str(dataaux) + " é um dia útil.", vbInformation, "Aviso" Else MsgBox "A data " + dataaux + " não é um dia útil.", vbInformation, "Aviso" End If 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
|
|
|
®ogerVB
|
OSASCO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 17/08/2005 09:58 hs
Valeu mesmo Martini...!!!!
|
|
|
VACA
|
LIMEIRA SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 17/08/2005 11:07 hs
coloca na seçao de dicas martini...
"Quando estou fraco, aí então é que sou Poderoso"
|
|
|
|