Aceptar Fechas válidas sólo desde usuario en Excel VBA
En mi tarea reciente, se me pidió que aceptara la entrada del usuario. Un valor de entrada fue la fecha de nacimiento y, por supuesto, debe ser una fecha.
Lo que estaba haciendo es almacenar la entrada en un tipo de datos variante. Esto hizo que el código no tuviera errores y aceptara cualquier valor que el usuario le diera. A continuación se muestra el código:
Dim dob As Variant dob = Application.InputBox("Enter Your Date of Birth")
Este fue, por supuesto, un enfoque incorrecto ya que el usuario puede ingresar cualquier valor que no sea una fecha válida.
Lo que quiero es hacer que mi código detecte cualquier fecha no válida y pedirle al usuario que ingrese una fecha válida y finalice la subrutina.
Aquí está el código que permite a los usuarios poner solo una fecha válida como entrada.
Sub check_date() Dim dob As Date On Error GoTo Errorhandler dob = Application.InputBox("Enter Your Date of Birth") On Error GoTo 0 Debug.Print dob Exit Sub Errorhandler: MsgBox "Please enter a valid date." End Sub
Cuando ejecute el código anterior, le pedirá que ingrese su fecha de nacimiento. Si ingresa una fecha no válida, le pedirá que ingrese una fecha válida y finalice el procedimiento.
How does it work?* The first and most important thing we have done is to use the Date type variable to store the expected date. Now, if you try to store a value that is not a valid date, it will through an error of «type mismatch».
A continuación, detectamos este error utilizando el controlador de errores On Error Goto *.
On Error GoTo Errorhandler dob = Application.InputBox("Enter Your Date of Birth") On Error GoTo 0
Usando On Error, saltamos el control a la etiqueta Errorhandler, que está justo antes de la instrucción End Sub. Por lo que se le pide al usuario que ingrese una fecha válida y el sub finaliza.
Errorhandler: MsgBox "Please enter a valid date." End Sub
Si el usuario pone una fecha válida, entonces el control fluye normalmente y la entrada se guarda en la variable dob. Hemos puesto la sub instrucción Exit para que el control no vaya a errorhandler y finalice el procedimiento allí mismo. Así que ponga todas sus declaraciones finales antes de exit sub. Y eso es.
Así que sí, chicos, así es como restringen al usuario para que ingrese solo una fecha válida.
Avíseme si tiene alguna duda con respecto a las fechas de VBA o cualquier otra consulta relacionada con Excel / VBA. Pregúntenos en la sección de comentarios a continuación.
Artículos relacionados:
link: / vba-insert-date-time-stamp-with-vba [Insertar fecha y hora con VBA]
| Para ingresar la marca de tiempo cuando se llenó una celda específica usando este Código VBA. Si ingresa cualquier valor en la Columna A, la celda adyacente en la columna B se llenará con la hora de entrada automáticamente.
`link: / excel-macros-and-vba-date-time-in-vb [Fecha y hora en VBA] | Encuentre todos los temas sobre fecha y hora en VBA en esta página.
Artículos populares:
link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-incrementa-su-productividad [50 accesos directos de Excel para aumentar su productividad]
| Acelera tu tarea. Estos 50 atajos lo harán trabajar aún más rápido en Excel.
link: / formulas-and-functions-Introduction-of-vlookup-function [La función VLOOKUP en Excel]
| Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas. enlace: / tips-countif-in-microsoft-excel [COUNTIF en Excel 2016]
| Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar un valor específico.
La función Countif es esencial para preparar su tablero.
link: / excel-formula-and-function-excel-sumif-function [Cómo utilizar la función SUMIF en Excel]
| Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.