Logo Hardware.com.br
Luis Sangy
Luis Sangy Membro Junior Registrado
94 Mensagens 10 Curtidas

[Resolvido] Qual deve ser a forma ou comando para fazer comparação de valores entre datas? VBA

#1 Por Luis Sangy 11/04/2016 - 11:02
Bom dia! Aqui estou eu novamente.
Desta vez estou com um problema com datas. Tenho um progama que tem 3 condições de comparação entre valores de datas, eu coloco normalmente na forma: if cells(a,10) < cells(a,11) then bla bla bla
Porém percebi que o programa sempre cai na primeira condição! Alterei na minha planilha a segunda célula para ficar menor que o valor inicial e mesmo assim caiu na primeira condição. Creio que o problema seja porque não identifiquei os valores como DATA. Como fazer isso? obs: sendo que a formatação de datas é diferente. no valor inicial o formato é: Ter (dia) 02/04/16 (data) 14:53 (hora) e no segundo valor aonde é comparado, o valor é: data:hora apenas.

Segunda duvida após resolução do primeiro problema: Como colocar uma condição no formato Data desta maneira: "SE o valor da data xx/xx/xx -3 dias for menor"
Como colocar esse -3 dias?
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#2 Por Marcelo G Pr...
11/04/2016 - 11:10
Ja tentou atribuir as datas em variaveis

Dim data1 as Date
Dim data2 as Date

data1 = range("A1").value
data2 = range("A2").value

Outra coisa que observei se vc tem data e quer comparar com data e hora provavelmente vai dar erro.

Acredito que não de para comparar Hoje() que retorna apenas a data com Agora() que vai retornar data e hora na mesma celula

Tenho quase certeza que vai dar erro
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Luis Sangy
Luis Sangy Membro Junior Registrado
94 Mensagens 10 Curtidas
#3 Por Luis Sangy
11/04/2016 - 11:35
Marcelo G Prudencio disse:
Ja tentou atribuir as datas em variaveis

Dim data1 as Date
Dim data2 as Date

data1 = range("A1").value
data2 = range("A2").value

Outra coisa que observei se vc tem data e quer comparar com data e hora provavelmente vai dar erro.

Acredito que não de para comparar Hoje() que retorna apenas a data com Agora() que vai retornar data e hora na mesma celula

Tenho quase certeza que vai dar erro

Marcelo, deu tipo incompatíveis.
Estou anexando a planilha para melhor entendimento, segue abaixo também o código até o momento.
Sub condicoes()
Dim a As Date

For a = 3 To 300
If Sheets("BD&quot.Cells(a, 4) = "" Then
Exit For
End If
Sheets("BD&quot.Cells(2, 18) = "Status"

If Sheets("BD&quot.Cells(a, 10) <= Sheets("BD&quot.Cells(a, 16) Then
Sheets("BD&quot.Cells(a, 18) = "Em dia"

Else
If Sheets("BD&quot.Cells(a, 10) > Sheets("BD&quot.Cells(a, 16) And Sheets("BD&quot.Cells(a, 10) < Sheets("BD&quot.Cells(a, 17) Then 'Falta colocar - 3 dias
Sheets("BD&quot.Cells(a, 18) = "Em Atraso"
Else
If Sheets("BD&quot.Cells(a, 10) < Sheets("BD&quot.Cells(a, 17) Then 'Falta colocar -2 dias
Sheets("BD&quot.Cells(a, 18) = "Em Risco"
End If
End If
End If





Next


End Sub


Veja se assim fica mais facil entender o que quero e aonde estou errando. Aguardo retorno!

Anexos

Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#4 Por Marcelo G Pr...
11/04/2016 - 15:18
Olhando rapidamente vc declarou a variavel a como data

Dim a as date

Mas nao carregou a variavel

a = ?

Esse é o primeiro problema que encontrei, se tem outros nao sei pq nao da pra rodar o codigo sem isso e nao sei o que deve ser carregado na variavel a

Mas vamos ao que interessa o que o codigo deve de fato fazer talvez seja mais facil reescrever do que tentar consertar esse.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Luis Sangy
Luis Sangy Membro Junior Registrado
94 Mensagens 10 Curtidas
#5 Por Luis Sangy
12/04/2016 - 09:47
Marcelo G Prudencio disse:
Olhando rapidamente vc declarou a variavel a como data

Dim a as date

Mas nao carregou a variavel

a = ?

Esse é o primeiro problema que encontrei, se tem outros nao sei pq nao da pra rodar o codigo sem isso e nao sei o que deve ser carregado na variavel a

Mas vamos ao que interessa o que o codigo deve de fato fazer talvez seja mais facil reescrever do que tentar consertar esse.

Eu nao carreguei a variavel por causa do For, pq quando voce coloca for a = 3 a já recebe o valor = 3. Ontem realizei varios testes e o grande problema é: minhas datas na planilha estão em formato 01.02.2015 e as datas da outra coluna estão Ter 01/02/2015 00:00 horas. Está tendo divergencia nisso, por isso nao esta puxando os dados. Fiz uma macro que formatasse as datas da coluna que está diferente porém ela inverte o mes com o dia, seguindo o padrao americano. Ai o excel maluco nao le os dados como mes e dia, dando o resultado errado. Como proceder?
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal