Aceitar datas válidas apenas do usuário no Excel VBA

Anonim

Em minha tarefa recente, fui solicitado a aceitar a entrada do usuário. Um valor de entrada era a data de nascimento e, é claro, deve ser uma data. O que eu estava fazendo é armazenar a entrada em um tipo de dados variante. Isso tornava o código livre de erros e aceitava qualquer valor que o usuário oferecesse. Abaixo está o código:

Dim dob As Variant dob ​​= Application.InputBox ("Insira sua data de nascimento") 

Obviamente, essa foi uma abordagem incorreta, pois o usuário pode inserir qualquer valor que pode não ser uma data válida.

O que eu quero é fazer meu código detectar qualquer data inválida e pedir ao usuário para inserir uma data válida e terminar a sub-rotina.

Este é o código que permite aos usuários colocar apenas uma data válida como entrada.

Sub check_date () Dim dob As Date On Error GoTo Errorhandler dob = Application.InputBox ("Insira sua data de nascimento") On Error GoTo 0 Debug.Print dob ​​Exit Sub Errorhandler: MsgBox "Por favor, insira uma data válida." End Sub 

Ao executar o código acima, ele solicitará que você insira sua data de nascimento. Se você inserir uma data inválida, será solicitado que você insira uma data válida e encerre o procedimento.

Como funciona?

A primeira e mais importante coisa que fizemos foi usar a variável do tipo Date para armazenar a data esperada. Agora, se você tentar armazenar um valor que não seja uma data válida, ocorrerá um erro de "incompatibilidade de tipo".

Em seguida, detectamos esse erro usando oNo erro, vá paramanipulador de erros.

Em erro GoTo Errorhandler dob = Application.InputBox ("Insira sua data de nascimento") Em erro GoTo 0 

Usando On Error, saltamos o controle para a tag Errorhandler, que está logo antes da instrução End Sub. Assim, o usuário é solicitado a inserir uma data válida e o sub termina.

Errorhandler: MsgBox "Por favor, insira uma data válida." End Sub 

Se o usuário colocar uma data válida, o controle flui normalmente e a entrada é salva na variável dob. Colocamos a sub-instrução Exit para que o controle não vá para o manipulador de erros e termine o procedimento ali. Portanto, coloque todas as suas instruções finais antes de exit sub. E é isso.

Então sim pessoal, é assim que você restringe o usuário a inserir apenas uma data válida. Deixe-me saber se você tiver alguma dúvida sobre as datas do VBA ou qualquer outra consulta relacionada ao Excel / VBA. Pergunte-nos na seção de comentários abaixo.

Inserir carimbo de data e hora com VBA | Para inserir o carimbo de data / hora quando uma célula específica foi preenchida usando este Código VBA. Se você inserir qualquer valor na coluna A, a célula adjacente na coluna B será preenchida com a hora da entrada automaticamente.

Data e hora em VBA | Encontre todos os tópicos sobre Data e Hora no VBA nesta página.

Como podemos formatar a data por meio do VBA? | Aprenda como formatar data usando VBA no Excel. Vamos dar um exemplo para entender como e onde podemos formatar a célula em um número de data abreviada.

Artigos populares:

50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos farão você trabalhar ainda mais rápido no Excel.

A função VLOOKUP no Excel | Esta é uma das funções mais usadas e populares do Excel, que é usada para pesquisar valores em diferentes intervalos e planilhas.

CONT.SE no Excel 2016 | Conte valores com condições usando esta função incrível. Você não precisa filtrar seus dados para contar um valor específico. A função Countif é essencial para preparar seu painel.

Como usar a função SUMIF no Excel | Esta é outra função essencial do painel. Isso ajuda você a somar valores em condições específicas.