Notifications
Clear all

Verificar o formato dos valores de céula

4 Posts
2 Usuários
0 Reactions
1,069 Visualizações
(@celsoyano)
Posts: 75
Trusted Member
Topic starter
 

Boa tarde,
Estou tentando montar uma macro, para que ele formate cada célula de acordo com o seu conteúdo.
Na coluna "A" eu informei os seguites valores:
TESTE
1
10,2
01:00
48:00:00
10,2
15/01/14
TESTE

E executei o código abaixo:

Sub TESTE()
Range("B:B").Delete
Cells(1, 1).Select
For i = 1 To 10
    If IsNumeric(Cells(i, 1).Value) Then Cells(i, 2) = "NUMERO"
    If IsDate(Cells(i, 1).Value) = True Then Cells(i, 2) = "DATA"
    If Application.IsText(Cells(i, 1).Value) Then Cells(i, 2) = "TEXTO"
Next
End Sub

Estou com dois problemas:

1- Repare que a célula com informação de Data, retorna data e retorna texto, usando botão F8 para executar pausadamente, é possível ver isso. Tem algum outro código, para que isso não ocorra? Ou seja, se eu usar Application.IsText, onde tiver data ou texto ele vai reconhecer os dois, mas queria que ele não reconhecesse data.

2- Como faço para reconhecer horas? A célula que tem horas, está reconhecendo como número!

Agradeço a quem puder me ajudar!

 
Postado : 01/08/2014 11:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Faz assim:

Sub TESTE()
    Range("B:B").Delete
    Cells(1, 1).Select
    For i = 1 To 10
        If IsDate(Cells(i, 1).Value) Then
            Cells(i, 2) = "DATA"

        ElseIf IsNumeric(Cells(i, 1).Value) Then
            Cells(i, 2) = "NUMERO"

        Else
            Cells(i, 2) = "TEXTO"
        End If
    Next
End Sub

Data e hora é a mesma coisa, e datae hora é número.
É uma longa historia... Em resumo:
Todas as datas no Excel tem um número inteiro equivalente e ela. E as horas, são frações desse inteiro. Isso explica pq quando vc formata uma célula com data pra Geral, vc ve um numero em torno de 40mil e pouco.

por isso é bom testar data primeiro, mas qquer numero entre 1 e 2.958.465 será compreendido como data verdadeiro. Esse número é o equivalente a 31/12/9999.

Daí, qualquer número menor que zero ou maior que esse valor não será considerado como data, ...
Toda data é um número mas nem todo numero é uma data...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/08/2014 1:30 pm
(@celsoyano)
Posts: 75
Trusted Member
Topic starter
 

pensei que houvesse uma forma baseado na formatação.

Obrigado.

 
Postado : 05/08/2014 6:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se quiser algo baseado em formatação, pode até dar certo, MAS,
daí não deverá usar Cells(i, 1).Value. Deverá usar Cells(i, 1).NumberFormat

;-)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/08/2014 9:32 am