Saltar al contenido

SAMAEL ESTEBAN MENDOZA

Miembro
  • Contador de contenido

    10
  • Unido

  • Última visita

Sobre SAMAEL ESTEBAN MENDOZA

  • Cumpleaños 05/21/1985

Visitantes recientes del perfil

1124 visitas de perfil

SAMAEL ESTEBAN MENDOZA's Achievements

Novato

Novato (1/14)

  • Creador de conversaciones
  • Primera publicación
  • 10 comentarios

Insignias recientes

0

Reputación de la comunidad

  1. Para todos los participantes del FORO EXCEL un feliz y prospero año nuevo y que Dios me los bendiga a todos ustedes. tengo un ligero problema es un archivo de ACCESS con ciertas características de análisis de datos. tengo tres cajas de texto 1) ingreso fecha; 2) ingreso días y 3) mediante comdo button me calcule incluyendo los días sábados, domingos y feriados dd/mm/yyyy ;.

    el lenguaje de programación es que me calcula sin contar días festivos, sábados ni domingos:

    Private Sub cmdSinSabNiDomNiFest_Click()

    '---BLOQUE 1: CREACIÓN DE VARIABLES Y CONTROL DE DATOS INTRODUCIDOS-----------------
            'Creamos las variables y les asignamos valor
        Dim vFIni As Variant, vDias As Variant
        
        vFIni = Me.txtFIni.Value
        vDias = Me.txtDias.Value
        
            'Controlamos que se hayan introducido valores
        If IsNull(vFIni) Then
            MsgBox "No se ha indicado ninguna fecha", vbInformation, "SIN FECHA"
            Me.txtFIni.SetFocus
            Exit Sub
        End If
        
        If IsNull(vDias) Then
            MsgBox "No se han indicado los días", vbInformation, "SIN DÍAS"
            Me.txtDias.SetFocus
            Exit Sub
        End If
        
    '---BLOQUE DOS: BLOQUE DE PROCESO-------------------------------

            'Creamos las variables temporales que nos darán la base para analizar la fecha
            'que vayamos obteniendo
        Dim i As Integer
        Dim fTmp As Date
        
            'Inicializamos las variables fTmp
        fTmp = vFIni
        
            'Analizamos día a día la fecha temporal. Si es sábado o domingo
            'o festivo obliga a realizar una iteración más a través de i=i-1
        For i = 1 To vDias
                'Creamos una variable temporal que nos recogerá el festivo de la tabla
            Dim festEnTabla As Variant
                'Comprobamos si el día de la fecha en cuestión es festivo
            festEnTabla = DLookup("[DFest]", "TFestivos", "[DFest]=#" & Format(fTmp, "mm/dd/yy") & "#")
                'Si devuelve un valor no nulo es que hay coincidencia
                'En este caso nos movemos a la fecha siguiente y forzamos una nueva reiteración
            If Not IsNull(festEnTabla) Then
                fTmp = fTmp + 1
                i = i - 1
                    'Si no es festivo analizamos si es sábado o domingo
            Else
                    'Si es sábado o domingo nos movemos
                    'a la fecha siguiente y forzamos una nueva reiteración
                If Weekday(fTmp) = vbSaturday Or Weekday(fTmp) = vbSunday Then
                    fTmp = fTmp + 1
                    i = i - 1
                        'Si no lo es, nos movemos a la fecha siguiente
                Else
                    fTmp = fTmp + 1
                End If
            End If
        Next
            
    '---BLOQUE TRES: ANÁLISIS DEL ÚLTIMO DÍA OBTENIDO----------------------------

            'Creamos el bloque que analizará el último día
        For i = 1 To 1
                'Si el día es festivo nos movemos al día siguiente y forzamos una nueva reiteración
            festEnTabla = DLookup("[DFest]", "TFestivos", "[DFest]=#" & Format(fTmp, "mm/dd/yy") & "#")
            If Not IsNull(festEnTabla) Then
                fTmp = fTmp + 1
                i = i - 1
                    'Si no es festivo miramos si es sábado o domingo
            Else
                    'Si es sábado o domingo nos movemos al día siguiente y forzamos una nueva reiteración
                If Weekday(fTmp) = vbSaturday Or Weekday(fTmp) = vbSunday Then
                    fTmp = fTmp + 1
                    i = i - 1
                End If
            End If
        Next
        
    '---BLOQUE CUATRO: ASIGNACIÓN DEL RESULTADO OBTENIDO

        Me.txtSinSabNiDomNiFest.Value = fTmp
    End Sub


     

    CONTAR DIAS.png

  2. Muy buenos días a todos los integrantes del FORO AYUDA EXCEL, encontré un archivo de access que permite sumar sin incluir los días sábados,  domingos y feriados pero lo que quiero es que SUME LOS DÍAS SÁBADOS Y DOMINGOS PERO NO LOS DÍAS FERIADOS, agradezco por anticipado a toda la comunidad de ayuda excel por sus valiosos aportes...este es su lenguaje de programación y es de archivo access.

    Private Sub cmdSinSabNiDomNiFest_Click()

    '---BLOQUE 1: CREACIÓN DE VARIABLES Y CONTROL DE DATOS INTRODUCIDOS-----------------
            'Creamos las variables y les asignamos valor
        Dim vFIni As Variant, vDias As Variant
        
        vFIni = Me.txtFIni.Value
        vDias = Me.txtDias.Value
        
            'Controlamos que se hayan introducido valores
        If IsNull(vFIni) Then
            MsgBox "No se ha indicado ninguna fecha", vbInformation, "SIN FECHA"
            Me.txtFIni.SetFocus
            Exit Sub
        End If
        
        If IsNull(vDias) Then
            MsgBox "No se han indicado los días", vbInformation, "SIN DÍAS"
            Me.txtDias.SetFocus
            Exit Sub
        End If
        
    '---BLOQUE DOS: BLOQUE DE PROCESO-------------------------------

            'Creamos las variables temporales que nos darán la base para analizar la fecha
            'que vayamos obteniendo
        Dim i As Integer
        Dim fTmp As Date
        
            'Inicializamos las variables fTmp
        fTmp = vFIni
        
            'Analizamos día a día la fecha temporal. Si es sábado o domingo
            'o festivo obliga a realizar una iteración más a través de i=i-1
        For i = 1 To vDias
                'Creamos una variable temporal que nos recogerá el festivo de la tabla
            Dim festEnTabla As Variant
                'Comprobamos si el día de la fecha en cuestión es festivo
            festEnTabla = DLookup("[DFest]", "TFestivos", "[DFest]=#" & Format(fTmp, "mm/dd/yy") & "#")
                'Si devuelve un valor no nulo es que hay coincidencia
                'En este caso nos movemos a la fecha siguiente y forzamos una nueva reiteración
            If Not IsNull(festEnTabla) Then
                fTmp = fTmp + 1
                i = i - 1
                    'Si no es festivo analizamos si es sábado o domingo
            Else
                    'Si es sábado o domingo nos movemos
                    'a la fecha siguiente y forzamos una nueva reiteración
                If Weekday(fTmp) = vbSaturday Or Weekday(fTmp) = vbSunday Then
                    fTmp = fTmp + 1
                    i = i - 1
                        'Si no lo es, nos movemos a la fecha siguiente
                Else
                    fTmp = fTmp + 1
                End If
            End If
        Next
            
    '---BLOQUE TRES: ANÁLISIS DEL ÚLTIMO DÍA OBTENIDO----------------------------

            'Creamos el bloque que analizará el último día
        For i = 1 To 1
                'Si el día es festivo nos movemos al día siguiente y forzamos una nueva reiteración
            festEnTabla = DLookup("[DFest]", "TFestivos", "[DFest]=#" & Format(fTmp, "mm/dd/yy") & "#")
            If Not IsNull(festEnTabla) Then
                fTmp = fTmp + 1
                i = i - 1
                    'Si no es festivo miramos si es sábado o domingo
            Else
                    'Si es sábado o domingo nos movemos al día siguiente y forzamos una nueva reiteración
                If Weekday(fTmp) = vbSaturday Or Weekday(fTmp) = vbSunday Then
                    fTmp = fTmp + 1
                    i = i - 1
                End If
            End If
        Next
        
    '---BLOQUE CUATRO: ASIGNACIÓN DEL RESULTADO OBTENIDO

        Me.txtSinSabNiDomNiFest.Value = fTmp
    End Sub
     

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.