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
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