Página 1 de 1

Validação de Datas Maiores que a Atual

Enviado: 11 Ago 2021 às 20:28
por MrSantos
Boa noite Gurus,

Tenho uma base que possuem duas colunas de datas e gostaria de criar uma Macro a qual apareça para o usuário uma mensagem de erro quando houver uma data preenchida maior que a atual.

Incialmente criei um código, mas sigo com alguns problemas pois a base (tem 40 mil linhas) possuem linhas em brancas e não sei como aplicar o Loop para duas colunas e linhas em brancas. Poderiam me aconselhar qual modificação fazer no código abaixo ?

Dim Linha As Double
Linha = 1

With Plan1

Do

Linha = Linha + 1

If .Cells(Linha, 38).Value > Date Then
Erro = MsgBox("DATA DE ENTREGA MAIOR QUE A DATA ATUAL", vbOKOnly, "Erro")
End If

If .Cells(Linha, 40).Value > VBA.Date Then
Erro = MsgBox("DATA DA BAIXA MAIOR QUE A DATA ATUAL", vbOKOnly, "Erro")
Exit Do
End If

Loop Until .Cells(Linha, 38).Value = ""

End With

Re: Validação de Datas Maiores que a Atual

Enviado: 12 Ago 2021 às 09:08
por osvaldomp
Experimente:
Código: Selecionar todos
Sub teste()
 Dim Linha As Long
  With Plan1
   For Linha = 2 To .Cells(Rows.Count, 38).End(3).Row
    If .Cells(Linha, 38) > Date Or .Cells(Linha, 40) > Date Then
     MsgBox "NA LINHA " & Linha & " HÁ DATA MAIOR QUE A DATA ATUAL", vbOKOnly, "Erro"
    End If
   Next Linha
  End With
End Sub
#
Eu sugiro uma outra abordagem: que a verificação da data seja feita ao inseri-la, via um código disparado pelo evento Worksheet_Change.

Re: Validação de Datas Maiores que a Atual

Enviado: 12 Ago 2021 às 15:41
por MrSantos
Olá Osvaldo, primeiramente muito obrigado pela sugestão a qual irei adotar seu código.

Como eu poderia acrescentar mais um IF para as Colunas 38 e 40 para validar data abaixo do dia 01/01/2017 e retornar um MsgBox "Data abaixo do esperado" ?

Re: Validação de Datas Maiores que a Atual

Enviado: 12 Ago 2021 às 16:24
por osvaldomp
Olá, @MrSantos .

Experimente este. Acrescentei a nova condição.
Código: Selecionar todos
Sub testeV2()
 Dim Linha As Long
  With Plan1
   For Linha = 2 To .Cells(Rows.Count, 38).End(3).Row
    If .Cells(Linha, 38) > Date Or .Cells(Linha, 40) > Date Then
     MsgBox "NA LINHA " & Linha & " HÁ DATA MAIOR QUE A DATA ATUAL", vbOKOnly, "Erro"
    ElseIf .Cells(Linha, 38) <> "" And .Cells(Linha, 38) < #1/1/2017# Or .Cells(Linha, 40) <> "" And .Cells(Linha, 40) < #1/1/2017# Then
     MsgBox "NA LINHA " & Linha & " HÁ DATA ANTERIOR A 01/01/2017", vbOKOnly, "Erro"
    End If
   Next Linha
  End With
End Sub

Re: Validação de Datas Maiores que a Atual

Enviado: 14 Ago 2021 às 15:34
por MrSantos
Osvaldo deu certo a nova condição, muito obrigado !