En formulario:
Private Sub TextBox16_Change(): ContarTextBoxes: End Sub
Private Sub TextBox17_Change(): ContarTextBoxes: End Sub
Private Sub TextBox18_Change(): ContarTextBoxes: End Sub
Private Sub TextBox19_Change(): ContarTextBoxes: End Sub
Private Sub TextBox20_Change(): ContarTextBoxes: End Sub
Private Sub TextBox21_Change(): ContarTextBoxes: End Sub
Private Sub TextBox22_Change(): ContarTextBoxes: End Sub
En módulo:
Sub ContarTextBoxes()
Dim Control As Control
Dim contador As Integer
Dim contador2 As Integer
Dim i As Integer
' Inicializar contadores
contador = 0
contador2 = 0
' Recorrer los TextBox desde TextBox16 hasta TextBox22
For i = 16 To 22
Set Control = frmvtl.Controls("TextBox" & i)
If Trim(Control.Value) <> "" Then
' Incrementar contador si hay datos
contador = contador + 1
Control.BackColor = RGB(0, 255, 0) ' Verde si hay datos
Else
Control.BackColor = RGB(255, 255, 255) ' Blanco si no hay datos
End If
Next i
' Evaluar TextBox21 y TextBox22 para contador2
If Trim(frmvtl.Controls("TextBox21").Value) = "" Then
contador2 = contador2 + 1 ' TextBox21 vacío
End If
If Trim(frmvtl.Controls("TextBox22").Value) = "" Then
contador2 = contador2 + 1 ' TextBox22 vacío
End If
' Mostrar resultados en los TextBox correspondientes
frmvtl.Controls("TextBox25").Value = contador
frmvtl.Controls("TextBox27").Value = contador
frmvtl.Controls("TextBox28").Value = contador
frmvtl.Controls("TextBox30").Value = contador2 ' Mostrar contador2
ActualizarTextBox
End Sub
Private Sub ActualizarTextBox()
Dim rangoFechas As Range
Dim fechaInicio As Date
Dim fechaFin As Date
Dim resultado As Long
Dim i As Long
Dim fechaActual As Date
Dim mesActual As Long
' Define la hoja de trabajo
With Sheets("USUARIOS & PRIVILEGIOS")
' Define el rango de fechas
Set rangoFechas = .Range("BS27:BS56")
' Calcula el primer y último día del mes actual
fechaInicio = WorksheetFunction.EoMonth(Date, -1) + 1 ' Primer día del mes actual
fechaFin = WorksheetFunction.EoMonth(Date, 0) ' Último día del mes actual
' Inicializa el resultado
resultado = 0
' Obtiene el mes actual
mesActual = Month(Date)
' Recorre las celdas para contar los días feriados del mes actual
For i = 1 To rangoFechas.Rows.Count
fechaActual = rangoFechas.Cells(i).Value
' Verifica si la fecha está dentro del mes actual
If fechaActual >= fechaInicio And fechaActual <= fechaFin Then
' Cuenta el día si es un feriado (suponiendo que los feriados están en formato de fecha)
resultado = resultado + 1
End If
Next i
End With
' Asigna el resultado al TextBox31
frmvtl.TextBox31.Value = resultado
End Sub