Ayuda con funcion Dias.Lab

Buen día:
Hace un día vi que publicastes una respuesta sobre la función día.lab considerando los sábados como laborales, fueras tan amable de explicármela, por ejemplo donde ingreso los datos, que datos necesito, en que celdas, etc.
Te agradezco de antemano tu apoyo y comprensión ya que no se mucho de macros.
mi correo es [email protected]
Saludos

1 Respuesta

Respuesta
1
La función es esta:
Option Explicit
'Funcion que encuentra el siguiente dia hábil
'** ARGUMENTOS
'Fecha_Inicial = fecha a partir de la cual se empieza a contar
'Dias_Laborables = numeros de dias que se quieren contar
'Dias_Festivos = dias a omitir en la cuenta como fechas especiales
'Omitir_Dias = dias a omitir como dia de la semana
' Domingo = 1
' Lunes = 2
' etc...
' Sabado = 7
'Devuelve el dia habil siguiente como fecha
Public Function Dia_Laborable(ByVal Fecha_Inicial As Date, _
ByVal Dias_Laborables As Integer, _
ByVal Dias_Festivos As Range, _
ByVal Omitir_Dias As Range) As Date
Dim co1 As Integer
Dim r As Range
Dim EsFestivo As Boolean
Dim EsOmitido As Boolean
Dim Direccion As Integer
'Los dias laborables no pueden ser cero
If Dias_Laborables <> 0 Then
'Para saber si aumenta o disminuye la fecha
Direccion = 1
If Dias_Laborables < 0 Then Direccion = -1
Do
EsFestivo = False
EsOmitido = False
'Aumentamos o disminuimos en uno la fecha inicial
Fecha_Inicial = Fecha_Inicial + Direccion
'Buscamos en los dias festivos
For Each r In Dias_Festivos
If r.Value = Fecha_Inicial Then
'Si es festivo sale del ciclo
EsFestivo = True
Exit For
End If
Next r
'Si es festivo no es necesario buscar en dias omitidos
If Not EsFestivo Then
'Buscamos en dias omitidos en caso de que no sea festivo
For Each r In Omitir_Dias
If r.Value = Weekday(Fecha_Inicial) Then
'Si es omitido salimos del ciclo
EsOmitido = True
Exit For
End If
Next r
End If
'NO deber ser festivo ni omitido para incrementar
If Not EsFestivo And Not EsOmitido Then
co1 = co1 + 1
End If
DoEvents
'Continuamos mienstras sea menor a los dias_laborables
Loop While co1 < Abs(Dias_Laborables)
'Asignamos la fecha encontrada a la funcion
Dia_Laborable = Fecha_Inicial
Else
'Si es cero devuelve un error tipo #!VALOR¡
Dia_Laborable = ""
End If
End Function
Ahora, para que esta función te sirva, tienes que crearla en excel ¿cómo? Entras en el menu de Excel a "Herramientas"-"Macro"-"Editor de Visual Basic" de ahí te despliega otra pantalla que es el editor interno de Visual Basic en Excel, insertas un modulo, lo copias y lo grabas, después puedes utilizar la función Dia_Laborable como cualquier otra función de Excel. Te recomiendo bajes de Internet manuales de macros de excel como en www.solomanuales.org/manuales_excel-manuall214419.htm o en www.lawebdelprogramador.com donde puedes encontrar muchos manuales que te explican detalladamente el empleo de VB de Excel
Saludos y no olvides finalizar la pregunta, ya que después no puedo recibir preguntas nuevas ya que se satura

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas