Tipos Incompatíveis.

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Tipos Incompatíveis.

Mensagempor RogerioTop » Seg Dez 18, 2017 4:47 pm

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.

Código: Selecionar todos
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
RogerioTop
Membro
Membro
 
Mensagens: 8
Registrado em: Seg Dez 11, 2017 3:50 pm
Has thanked: 1 time
Have thanks: 0 time

{ SO_SELECT }

Re: Tipos Incompatíveis.

Mensagempor wagner » Seg Dez 18, 2017 5:51 pm

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.
Se a resposta foi últil para você, por gentileza, Amigo,clique na mãozinha ao lado direito da sua tela. No canto superior.

Atenciosamente
Wagner Morel
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 3276
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 56 times
Have thanks: 1434 times

Re: Tipos Incompatíveis.

Mensagempor RogerioTop » Qui Dez 21, 2017 7:44 am

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.
RogerioTop
Membro
Membro
 
Mensagens: 8
Registrado em: Seg Dez 11, 2017 3:50 pm
Has thanked: 1 time
Have thanks: 0 time

Re: Tipos Incompatíveis.

Mensagempor klarc28 » Qui Dez 21, 2017 5:20 pm

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
Quando quiser agradecer, clique no joinha. Marque como resolvido na parte que resolveu sua dúvida.
klarc28
Membro
Membro
 
Mensagens: 477
Registrado em: Sáb Dez 09, 2017 12:33 am
Has thanked: 6 times
Have thanks: 166 times

Re: Tipos Incompatíveis.

Mensagempor RogerioTop » Sex Jan 05, 2018 2:29 pm

PLANILHA PARA FORUM.rar




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.
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por wagner em Sex Jan 05, 2018 7:27 pm, em um total de 1 vez.
Razão: Não há necessidade de fazer citações nas respostas. Apenas de trechos, quando necessário.
RogerioTop
Membro
Membro
 
Mensagens: 8
Registrado em: Seg Dez 11, 2017 3:50 pm
Has thanked: 1 time
Have thanks: 0 time

Re: Tipos Incompatíveis.

Mensagempor xlarruda » Sex Jan 05, 2018 3:47 pm

Colega RogerioTop boa tarde,

Sua planilha está protegida por senha...
Att,

xlarruda.
Avatar do usuário
xlarruda
Membro
Membro
 
Mensagens: 218
Registrado em: Qua Out 04, 2017 9:41 am
Localização: Cuiabá-MT
Has thanked: 57 times
Have thanks: 61 times

Re: Tipos Incompatíveis.

Mensagempor RogerioTop » Sáb Jan 06, 2018 3:03 pm

xlarruda escreveu: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!
RogerioTop
Membro
Membro
 
Mensagens: 8
Registrado em: Seg Dez 11, 2017 3:50 pm
Has thanked: 1 time
Have thanks: 0 time

Re: Tipos Incompatíveis.

Mensagempor RogerioTop » Qua Jan 17, 2018 8:34 am

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!
RogerioTop
Membro
Membro
 
Mensagens: 8
Registrado em: Seg Dez 11, 2017 3:50 pm
Has thanked: 1 time
Have thanks: 0 time

Re: Tipos Incompatíveis.

Mensagempor Reinaldo » Qua Jan 17, 2018 10:01 am

Na planilha Referidos, celula C171 há um erro, corrija essa celula e rode sua rotina novamente
Reinaldo
Gostou da resposta? Clique no ícone "Positivo" da mensagem!(ao lado de citar)
Avatar do usuário
Reinaldo
Expert
Expert
 
Mensagens: 4046
Registrado em: Sáb Dez 19, 2009 9:59 am
Localização: Garça - SP / SCS - SP
Has thanked: 175 times
Have thanks: 1836 times


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante