Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Ejemplo de Select Case aplicado a la validación del ingreso de una fecha

| 1 comentario

Con la estructura de control SELECT CASE podemos evaluar una variable y realizar acciones dependiendo del valor de esta. La diferencia con el IF consiste en que el número de posibilidades de la evaluación de esta variable no tiene por que ser si o no, pudiendo hacer cosas para un número indeterminado de valores.

En el siguiente ejemplo valida el ingreso de un campo de tipo fecha, retornando un mensaje de error si la fecha no es valida o de lo contrario retornará un mensaje que la fecha ingresada es correcta.

Para validar una fecha se debe tomar en cuenta las siguientes premisas:

  • Los meses de Enero,Marzo,Mayo,Julio,Agosto,Octubre y Diciembre tiene 31 días.
  • Los Meses de Abril,Junio,Setiembre y Noviembre tienen 30 días
  • El mes de Febrero tiene 29 días si el año es bisiesto(multiplo de 4) y 28 en caso contrario.
  • Los meses del año estan comprendido entre Enero y Diciembre ( 1-12)
  • El año para este ejemplo debe estar entre el rango (1900-3000)

Fomulario y código en VBA de este ejemplo

En el siguiente ejemplo se aprecia la utilización de la sentencia SELECT CASE utilizado para evaluar los días de acuerdo al mes ingresado, y también para retornar el mensaje de error o conformidad según sea el caso.

Validar Fecha 01

Private Sub CommandButton1_Click()
Dim nAnho, nMes, nDia, nerror As Integer
Dim msgerror

nerror = 0

nAnho = Mid(ifecha, 7, 4)
nMes = Mid(ifecha, 4, 2)
nDia = Mid(ifecha, 1, 2)

If nAnho > 1900 And nAnho < 3000 Then
Select Case nMes
Case 1, 3, 5, 7, 8, 10, 12
If nDia < 1 Or nDia > 31 Then
nerror = 1
End If
Case 4, 6, 9, 11
If nDia < 1 Or nDia > 30 Then
nerror = 1
End If
Case 2
If nAnho Mod 4 = 0 Then
If nDia < 1 Or nDia > 29 Then
nerror = 1
End If
Else
If nDia < 1 Or nDia > 28 Then
nerror = 1
End If
End If
Case Else
nerror = 2
End Select
Else
nerror = 3
End If
Select Case nerror
Case 0
MsgBox ("Fecha Ingresada Correcta")
ifecha = ""
Case 1
MsgBox ("Día Ingresado no Valido")
Case 2
MsgBox ("Mes Ingresado no Valido")
Case 3
MsgBox ("Año Ingresado no Valido (1900-3000)")
End Select

End Sub

Autor: Germán Vara O.

Ejemplo SELECT CASE validar_fecha

Un comentario

  1. Debería aclarar que la fecha ha de ser dd/mm/aaaa, sino no funciona

Deja una respuesta

Los campos requeridos estan marcados con *.