Notifications
Clear all

Tipos Incompatíveis.

9 Posts
5 Usuários
0 Reactions
1,699 Visualizações
(@rogeriotop)
Posts: 0
New Member
Topic starter
 

Olá, Feras!
Eu tenho uma pasta de trabalho com quase 10 anos de uso. À partir de 2013 comecei a automatizar processos com Macros VBA.
Essa planilha tem várias abas e uma delas tem um cadastro de mais de 56000 nomes com telefones.
Com o advento do nono dígito precisei acrescentá-lo e o fiz com a ajuda do fórum.

O problema é que fiz a conversão em outra planilha e depois copiei e colei os dados obtidos na planilha original (colar valores).
Fui muito mazanza, pois não fiz um backup.

Depois de disso, ao fazer a filtragem (comando que compara um número de telefone com os já cadastrados e traz o resultado em outra planilha junto com nome, data de cadastro e status) o código trava e dá erro 13 - tipos incompatíveis.

Já formatei os dados onde pude, deixando todos como texto, todos como número geral, nada adiantou. Acrecentei .Value às células citadas no código e nada.

Abaixo segue o código, porém se alguém tiver uma orientação que não precise mecher no código tá valendo.

O código trava no segundo "if", coloquei a informação ali para ajudar.

Sub FILTRA()
    'COPIAR NOME DO INDICADOR PARA A CƒLULA C7
    
    Plan8.Select
    Application.ScreenUpdating = False
    'DESPROTEGE A PLANILHA
     ActiveSheet.Unprotect
                
                Range("C7").Value = Range("K2")
                
    'LIMPAR CONTEòDO DA òLTIMA BUSCA
    Plan8.Range("I5:P65000").ClearContents
    Plan8.Range("c13:C16").ClearContents
    Plan8.Range("B18:C25").ClearContents
    'INSERIR VALOR NAS CƒLULAS C5 E C6 (ONDE SE DIGITA OS FONES PARA BUSCA), PARA NÌO RETORNAR AS CƒLULAS VAZIAS NA BUSCA.
    If Plan8.Cells(5, 3) = "" Then
        Plan8.Cells(5, 3) = 11111111
    End If
        If Plan8.Cells(6, 3) = "" Then
        Plan8.Cells(6, 3) = 11111111
        
    End If
    

    'ENCONTRAR òLTIMA LINHA NA PLANILHA REFERIDOS
    ULTIMALINHA = Plan1.Cells(Rows.Count, 2).End(xlUp).Row
    'VARIçVEL LINHA (lin = 5) ƒ ONDE OS DADOS SERÌO INSERIDOS
        lin = 5
        For i = 2 To ULTIMALINHA
        'QUESTIONAR AO EXCEL QUAL LINHA TEM O NòMERO
        'PESQUISA FONE 1 NA PRIMEIRA COLUNA

'TRAVA JÁ NA PRIMEIRA LINHA DO IF. Em uma das tentativas eu acrescentei .Value depois dos parênteses e travou no próximo bloco, mas daí eu acrescentei no próximo e 
'voltou a travar na primeira linha do If novamente.

        If Plan1.Cells(i, 3) = Plan8.Cells(5, 3) Then 
           'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
            Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
            Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
            Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
            Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
            Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
            Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
            Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
            Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
                   
            lin = lin + 1
        End If
        
                 'PESQUISA FONE 1 NA SEGUNDA COLUNA
            If Plan1.Cells(i, 4) = Plan8.Cells(5, 3) Then
               'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
                Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
                Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
                Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
                Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
                Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
                Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
                Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
                       
                lin = lin + 1
            End If
                        'PESQUISA FONE 2 NA SEGUNDA COLUNA
                If Plan1.Cells(i, 4) = Plan8.Cells(6, 3) Then
                    'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                    Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
                    Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
                    Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
                    Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
                    Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
                    Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
                    Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
                    Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
                           
                    lin = lin + 1
        
                End If
                
                                     'PESQUISA FONE 2 NA PRIMEIRA COLUNA
                    If Plan1.Cells(i, 3) = Plan8.Cells(6, 3) Then
                       'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                        Plan8.Cells(lin, 9) = Plan1.Cells(i, 1)
                        Plan8.Cells(lin, 10) = Plan1.Cells(i, 2)
                        Plan8.Cells(lin, 11) = Plan1.Cells(i, 3)
                        Plan8.Cells(lin, 12) = Plan1.Cells(i, 4)
                        Plan8.Cells(lin, 13) = Plan1.Cells(i, 5)
                        Plan8.Cells(lin, 14) = Plan1.Cells(i, 6)
                        Plan8.Cells(lin, 15) = Plan1.Cells(i, 7)
                        Plan8.Cells(lin, 16) = Plan1.Cells(i, 8)
                               
                        lin = lin + 1
                    End If
        Next
        
          'ENCONTRAR òLTIMA LINHA NA PLANILHA NEGRA
    ULTIMALINHA = Plan4.Cells(Rows.Count, 1).End(xlUp).Row
    'VARIçVEL LINHA (lin = 22) ƒ ONDE OS DADOS SERÌO INSERIDOS
        lin = 22
               For y = 2 To ULTIMALINHA
        'QUESTIONAR AO EXCEL QUAL LINHA TEM O NòMERO
        'PESQUISA FONE 1 NA PRIMEIRA COLUNA NEGRA
        If Plan4.Cells(y, 2) = Plan8.Cells(5, 3) Then
           'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
            Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
            Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
            Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
            Plan8.Cells(22, 3) = "LISTA NEGRA"
                   
            lin = lin + 1
        End If
        
                 'PESQUISA FONE 1 NA SEGUNDA COLUNA NEGRA
            If Plan4.Cells(y, 3) = Plan8.Cells(5, 3) Then
               'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
                Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
                Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
                Plan8.Cells(22, 3) = "LISTA NEGRA"
                       
                lin = lin + 1
            End If
                    'PESQUISA FONE 2 NA PRIMEIRA COLUNA NEGRA
                If Plan4.Cells(y, 2) = Plan8.Cells(6, 3) Then
                    'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                    Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
                    Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
                    Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
                    Plan8.Cells(22, 3) = "LISTA NEGRA"
                           
                    lin = lin + 1
        
                End If
                
                        'PESQUISA FONE 2 NA SEGUNDA COLUNA NEGRA
                    If Plan4.Cells(y, 3) = Plan8.Cells(6, 3) Then
                       'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                        Plan8.Cells(lin, 10) = Plan4.Cells(y, 1)
                        Plan8.Cells(lin, 11) = Plan4.Cells(y, 2)
                        Plan8.Cells(lin, 12) = Plan4.Cells(y, 3)
                        Plan8.Cells(22, 3) = "LISTA NEGRA"
                        
                               
                        lin = lin + 1
                    End If
                    
                                                                    
        Next
             
        
        'PESQUISA E FILTRA PROCON
        'ENCONTRAR òLTIMA LINHA NA PLANILHA PROCON
            ULTIMALINHA = Plan3.Cells(Rows.Count, 2).End(xlUp).Row
                    'PESQUISA PROCON FONE 1
                For x = 2 To ULTIMALINHA
                    If Plan3.Cells(x, 2) = Plan8.Cells(5, 3) Then
                        Plan8.Cells(13, 3) = "PROCON"
                     MsgBox "NÃO LIGUE! REGISTRADO NO PROCON", vbOKOnly, "PROCON"
                    End If
                    
                          'PESQUISA PROCON FONE 2
         
                            If Plan3.Cells(x, 2) = Plan8.Cells(6, 3) Then
                                Plan8.Cells(14, 3) = "PROCON"
                       MsgBox "NÃO LIGUE! REGISTRADO NO PROCON", vbOKOnly, "PROCON"
                            End If
               
         Next
                                         
          'PESQUISA E FILTRA SE ƒ ALUNO OU NÌO E Dç A MENSAGEM "ƒ ALUNO" NA CƒLULA
          'ENCONTRAR òLTIMA LINHA NA PLANILHA ALUNOS
          
            'ENCONTRAR òLTIMA LINHA NA PLANILHA ALUNOS
    ULTIMALINHA = Plan2.Cells(Rows.Count, 1).End(xlUp).Row
    'VARIçVEL LINHA (lin = 22) ƒ ONDE OS DADOS SERÌO INSERIDOS
        lin = 22
               For y = 2 To ULTIMALINHA
        'QUESTIONAR AO EXCEL QUAL LINHA TEM O NòMERO
        'PESQUISA FONE 1 NA PRIMEIRA COLUNA ALUNOS
        If Plan2.Cells(y, 2) = Plan8.Cells(5, 3) Then
           'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
            Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
            Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
            Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
            Plan8.Cells(23, 3) = "É ALUNO"
               MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
            lin = lin + 1
        End If
        
                 'PESQUISA FONE 1 NA SEGUNDA COLUNA ALUNOS
            If Plan2.Cells(y, 3) = Plan8.Cells(5, 3) Then
               'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
                Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
                Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
                Plan8.Cells(23, 3) = "É ALUNO"
                   MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
                lin = lin + 1
            End If
                    'PESQUISA FONE 2 NA PRIMEIRA COLUNA ALUNOS
                If Plan2.Cells(y, 2) = Plan8.Cells(6, 3) Then
                    'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                    Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
                    Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
                    Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
                    Plan8.Cells(23, 3) = "É ALUNO"
                       MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
                    lin = lin + 1
        
                End If
                
                        'PESQUISA FONE 2 NA SEGUNDA COLUNA ALUNOS
                    If Plan2.Cells(y, 3) = Plan8.Cells(6, 3) Then
                       'ENTÌO OS DADOS DA PLANILHA REFERIDOS SERÌO COLADOS AQUI
                        Plan8.Cells(lin, 10) = Plan2.Cells(y, 1)
                        Plan8.Cells(lin, 11) = Plan2.Cells(y, 2)
                        Plan8.Cells(lin, 12) = Plan2.Cells(y, 3)
                        Plan8.Cells(23, 3) = "É ALUNO"
                        
                        MsgBox "ESTÁ CADASTRADO(A)COMO ALUNO", vbOKOnly, "É ALUNO"
                        
                               
                        lin = lin + 1
                    End If
                    
                                                                    
        Next
          
        Application.ScreenUpdating = True
           
                
            MsgBox "BUSCA CONCLUIDA!" + vbCrLf + "VOCÊ PODE FAZER OUTRA BUSCA OU SALVAR O REFERIDO ATUAL", vbOKOnly, "CONCLUIDO"
            
                Range("C4").Select
                
                ActiveSheet.Protect
              
          
End Sub
 
Postado : 18/12/2017 2:47 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

RogerioTop ,

Boa tarde!

Seja muito bem vindo ao fórum.

Para aproveitar ao máximo o fórum e sempre manter o mesmo de forma organizada, sugiro ler os tópico da regras abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Movi sua mensagem para um local adequado (VBA & Macros) pois o local aonde você postou destina-se somente a apresentação de novos usuários.

Quanto a sua dúvida, sugiro anexar, aqui mesmo no fórum, seu arquivo compactado com .ZIP ou um exemplo com dados fictícios, porém com exatamente o mesmo layout do arquivo original. Isso propiciará uma reposta rápida por parte de todos que poderão rodar e depurar seu código.

 
Postado : 18/12/2017 3:51 pm
(@rogeriotop)
Posts: 0
New Member
Topic starter
 

Bom dia, Wagner.

Obrigado e desculpe pela gafe.
Tomarei mais cuidado da próxima vez.

Vou precisar de uns dias para substituir os dados por dados fictícios, pois estou saindo em férias hoje com a família.
Mas assim que o fizer postarei aqui.

Essa planilha é uma das minhas principais ferramentas de trabalho e eu acabei de quase inutilizar ela.

Grande abraço e um ótimo final de ano.

 
Postado : 21/12/2017 5:44 am
(@klarc28)
Posts: 0
New Member
 

Esse erro acontece quando você quer colocar um texto em uma variável numérica, por exemplo, ou está tentando fazer uma operação entre letras e números, ou seja, você está tentando colocar um dado em uma variável, mas esse tipo de dado não é aceito para esse tipo de variável, você está tentando fazer um cálculo, mas não é possível calcular vinte por cento de vazio, por exemplo.

https://www.youtube.com/results?search_query=vba+tipos+incompat%C3%ADveis

 
Postado : 21/12/2017 3:20 pm
(@rogeriotop)
Posts: 0
New Member
Topic starter
 

Boa tarde, precisei reduzir o arquivo a poucos registros, pois o tamanho original era de quase 5 mb.
Porém, testei e continua dando o mesmo erro.
Grande abraço e desde já agradeço a ajuda.

Rogério.

 
Postado : 05/01/2018 12:29 pm
(@xlarruda)
Posts: 0
New Member
 

Colega RogerioTop boa tarde,

Sua planilha está protegida por senha...

 
Postado : 05/01/2018 1:47 pm
(@rogeriotop)
Posts: 0
New Member
Topic starter
 

Colega RogerioTop boa tarde,

Sua planilha está protegida por senha...

Meu Deus!
Mais uma gafe sem tamanho!
A senha do VBA é 789632, assim como a senha de qualquer planilha que esteja protegida.

Mil desculpas!

 
Postado : 06/01/2018 1:03 pm
(@rogeriotop)
Posts: 0
New Member
Topic starter
 

Olá, pessoal!
Eu tive que pegar uma versão antiga da planilha e perdi muitos dados.
Se alguém tiver uma dica, pois continuo andando em círculos.

Tentei atribuir variáveis no início do código, mas não rodou, :(

Estou estudando, mas sou bem limitado.

Abraço!

 
Postado : 17/01/2018 6:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Na planilha Referidos, celula C171 há um erro, corrija essa celula e rode sua rotina novamente

 
Postado : 17/01/2018 8:01 am