Compreender a função isdate excel vba

função IsDate do VBA supostamente informa se uma cadeia de texto pode ser interpretado como uma data. Por exemplo, todas as seguintes expressões são avaliadas como True:

IsDate ( “2015/05/25”) IsDate ( “16 de janeiro”) IsDate ( “12-1”) IsDate ( “12/1/15”) IsDate ( “2/30”) IsDate ( “30/2” )

Nos dois últimos exemplos, observe que IsDate não é exigente sobre a ordem do dia e mês. Ambas estas cordas poderia ser interpretado como uma data, então IsDate retorna True (independentemente de suas configurações de formato de data do sistema).

Video: VBA to Delete any files. Must know KILL VBA Function

Aqui estão algumas informações a partir de um artigo de suporte da Microsoft:

A VBA funções de data IsDate, formato, CDate e CVDate utilizam uma função encontrada na automação OLE (OleAut32.dll). Esta função procura todos os possíveis formatos de data por tokenizing cada um dos valores separados na cadeia que representa a data e retorna um valor booleano que indica se a entrada pode ser representada como uma data.

Isto é importante para lembrar ao usar a função de interpretar uma data que contém um ano de 2 dígitos. Diferentes localidades utilizar vários formatos de data (isto é, mm / dd / aa, aa / mm / dd, DD MMM AA, AA DD MMM, e assim por diante) e, por conseguinte, a função tenta os dígitos em todas as posições até que a função foi encontrada uma data válida ou esgotado todas as possibilidades.

Só porque IsDate reconhece uma string como uma data não significa que a cadeia pode ser confiavelmente convertido para uma data. Em alguns casos, o resultado é ambíguo. Por exemplo, o que acontece com esta expressão?

IsDate ( “29-Feb-01”)

29 fevereiro de 2001 não é uma data válida. No entanto, esta expressão retorna True porque 01 de fevereiro de 1929 (e 2 de Janeiro, 1929) são datas válidas. E assim são as mesmas datas em 2029.

A busca de documentação IsDate veio vazio. Com base em testes, IsDate aceita qualquer dos seguintes como caracteres de separação: uma barra (/), um hífen (-), uma vírgula (,), um ponto e um espaço (.).

Portanto, as seguintes expressões todas retornar True:

ÉData ( “5.1”) ÉData ( “30 6”) ÉData ( “30,6”) ÉData ( “1/2”)



Mas depois há esta anomalia: As expressões a seguir retorna True:

IsDate ( “5.1.5”) IsDate ( “5.1.05”)

No entanto, inexplicitly, esta expressão devolve Falso:

Video: PROCV no Excel VBA(Visual Basic For Application)

IsDate ( “5.1.2005”)

Suponha que você criou um formulário de usuário com um InputBox onde o usuário insere uma data. Deve ficar claro que o uso de IsDate para validar a entrada não é muito confiável.

As coisas ficam ainda mais confuso quando você percebe que IsDate abrange também os valores de tempo. (Não há nenhuma função ISTIME correspondente.) Assim, as seguintes expressões todas retornar True:

ÉData ( “4:45”) ÉData ( “4,45”) ÉData ( “4 45”) ÉData ( “4/45”) ÉData ( “23:59”)

Estas expressões retornar False:

IsDate ( “4:60”) IsDate ( “24.45”)

É importante salientar que IsDate não exibe todas estas peculiaridades quando você passar um argumento intervalo. Por exemplo:

IsDate (Range ( “A1”))

Parece que IsDate é perfeitamente confiável na identificação de células que contém uma data ou uma hora. Não se trata, por exemplo, identificar uma célula que contém 5.1 como uma data. Se o seu código precisa determinar se uma string pode ser interpretado como uma data, a melhor solução é colocar essa string em uma célula, e em seguida, escrever código para verificar o conteúdo da célula.


Publicações relacionadas