Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/02/2015, 06:43
Ace_ventura
 
Fecha de Ingreso: octubre-2005
Mensajes: 188
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Como calcular último día hábil de un mes en visual basic 6

Buenos días, traigo el día de hoy la solución que me facilito el Sr. Jose Rubi en su foro, por si a alguien le puede servir.
Código PHP:
Function FechaEfectiva(Fecha As Date) As Date
'dada una fecha comprueba si es el primer día hábil del mes y en caso de serlo, devuelve el último hábil del mes anterior. En otro caso devuelve la fecha recibida

Dim PrimerHabil As Date, UltimoHabil As Date, DiaSemana As Long

'
por defecto devuelvo la fecha recibida sin modificar

FechaEfectiva 
Fecha

'el primer día hábil del mes como mucho será el día 3

If Day(Fecha) > 3 Then Exit Function

'
calculo el primer día hábil del mes

PrimerHabil 
DateValue("1/" Month(Fecha) & "/" Year(Fecha))
DiaSemana Weekday(PrimerHabilvbMonday)

'si es sábado o domingo le sumo los días que resten hasta el lunes

If DiaSemana >= 6 Then PrimerHabil = DateAdd("d", (7 - DiaSemana + 1), PrimerHabil)

'
si la fecha no es el primer día hábil devuelvo la fecha recibida

If Fecha <> PrimerHabil Then Exit Function

'si quieres que al recibir un día no hábil del principio del mes (ej.: 1/2/2015) también devuelva el último hábil del mes anterior cambia la línea por : If Fecha > PrimerHabil Then Exit Function

'
calculo el último día habil del mes anterior

UltimoHabil 
DateSerial(Year(Fecha), Month(Fecha), 1)  'esto significa un día antes del día uno del mes y año de la fecha recibida
'
también valdría UltimoHabil DateAdd("d", -1"1/" Month(Fecha) & "/" Year(Fecha))

DiaSemana Weekday(UltimoHabilvbMonday)

'si es sábado o domingo le resto los días que pasen del viernes

If DiaSemana >= 6 Then UltimoHabil = DateAdd("d", (5 - DiaSemana), UltimoHabil)

'
devuelvo el último día hábil

FechaEfectiva 
UltimoHabil
End 
Function