Notifications
Clear all

Erro tipos incompatíveis - Substituir nomes em celulas

6 Posts
3 Usuários
0 Reactions
1,664 Visualizações
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Bom Dia Pessoal!

Por favor, me ajudem a achar onde foi que eu errei no código abaixo, porque não sei o que pode ser:

A Macro localiza nomes em uma base e substitui por outro.

Sub Macro1()

Dim x As Long, lastrow As Long
lastrow = Cells(Rows.Count, 1).End(xlUp).Row

'SUBSTITUI OS NOMES DOS GERENTES NAS CELULAS (MARIA e JOÃO)
For x = lastrow To 1 Step -1

If Cells(x, 2).Value = "MARIA FULANO CICLANO" And Cells(x, 13).Value = "ES" Then
Cells(x, 2).Value = "MARIA - ESTADO ES"

ElseIf Cells(x, 2).Value = "MARIA FULANO CICLANO" And Cells(x, 13).Value = "RJ" Then
Cells(x, 2).Value = "MARCOS - ESTADO RJ"

ElseIf Cells(x, 2).Value = "JOÃO CICLANO DA SILVA" And Cells(x, 13).Value = "SP" Then
Cells(x, 2).Value = "JOÃO - ESTADO SP"

ElseIf Cells(x, 2).Value = "JOÃO CICLANO DA SILVA" And Cells(x, 13).Value = "MG" Then
Cells(x, 2).Value = "JOÃO - ESTADO MG"

End If

Next x

End Sub

O Erro que ocorre é de "Tempos incompatíveis" e a linha a baixo é indicada:
If Cells(x, 2).Value = "MARCOS AURELIO JUSTINO RIBEIRO" And Cells(x, 13).Value = "ES" Then

O mais estranho é que alguns nomes são alterados de acordo com a macro até ocorrer o erro.

Abçs

 
Postado : 03/04/2014 7:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tempos Incompativeis ?

Não seria "tipos" ?

Pq tem que ser macro? pq vc nao faz uma fórmula simples ?

E a linha que dá o erro não existe na sua macro, seria legal vc colocar a macro toda, sem excluir pedaços...

 
Postado : 03/04/2014 8:04 am
(@gtsalikis)
Posts: 2373
Noble Member
 

tb não achei o erro, mas, ...

Creio que seja "tipos incompatíveis". Seria um problema em alguma variável (provavelmente a "x"). Quando der o erro novamente, veja o valor de "x".

Tente dessa forma tb...

Sub Macro1()

Dim x As Long, lastrow As Long
lastrow = Cells(Rows.Count, 1).End(xlUp).Row

'SUBSTITUI OS NOMES DOS GERENTES NAS CELULAS (MARIA e JOÃO)
For x = lastrow To 1 Step -1
    Select Case Cells(x, 13).Value

        Case Is = "ES"
            If Cells(x, 2).Value = "MARIA FULANO CICLANO" Then Cells(x, 2).Value = "MARIA - ESTADO ES"

        Case Is = "RJ"
            If Cells(x, 2).Value = "MARIA FULANO CICLANO" Then Cells(x, 2).Value = "MARCOS - ESTADO RJ"

        Case Is = "SP"
            If Cells(x, 2).Value = "JOÃO CICLANO DA SILVA" Then Cells(x, 2).Value = "JOÃO - ESTADO SP"
    
        Case Is = "MG"
            If Cells(x, 2).Value = "JOÃO CICLANO DA SILVA" Then Cells(x, 2).Value = "JOÃO - ESTADO MG"

    End Select
Next x

End Sub
 
Postado : 03/04/2014 8:11 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Desculpa! Fiz edições devido ser dados confidenciais e fiz cagada!

Vou dizer o que preciso fazer, e não pode ser formula pois estou automatizando uma planilha para que o usuário não mexa na base.

1 - Na coluna A tenho vários nomes.
2 - Na Coluna B tenho varias siglas de estados.

Preciso que uma macro localize na base a linha onde: Coluna A = "MARIA CICLANO DA SILVA" e Coluna B = "RJ"
e substitua o valor da celula "MARIA CICLANO DA SILVA" para "MARIA ESTADO DO RJ".

Se fosse uma formula do Excel eu faria assim: =SE(E(A2="MARIA CICLANO DA SILVA";B2="RJ");"MARIA ESTADO RJ").

 
Postado : 03/04/2014 8:25 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

tb não achei o erro, mas, ...

Creio que seja "tipos incompatíveis". Seria um problema em alguma variável (provavelmente a "x"). Quando der o erro novamente, veja o valor de "x".

Tente dessa forma tb...

Sub Macro1()

Dim x As Long, lastrow As Long
lastrow = Cells(Rows.Count, 1).End(xlUp).Row

'SUBSTITUI OS NOMES DOS GERENTES NAS CELULAS (MARIA e JOÃO)
For x = lastrow To 1 Step -1
    Select Case Cells(x, 13).Value

        Case Is = "ES"
            If Cells(x, 2).Value = "MARIA FULANO CICLANO" Then Cells(x, 2).Value = "MARIA - ESTADO ES"

        Case Is = "RJ"
            If Cells(x, 2).Value = "MARIA FULANO CICLANO" Then Cells(x, 2).Value = "MARCOS - ESTADO RJ"

        Case Is = "SP"
            If Cells(x, 2).Value = "JOÃO CICLANO DA SILVA" Then Cells(x, 2).Value = "JOÃO - ESTADO SP"
    
        Case Is = "MG"
            If Cells(x, 2).Value = "JOÃO CICLANO DA SILVA" Then Cells(x, 2).Value = "JOÃO - ESTADO MG"

    End Select
Next x

End Sub

Obrigado pela dica de parar o mouse sobre a variável "x", não sabia que ela indicava uma legenda com o valor!

O erro estava na base em 2 linhas, onde uma das colunas estava com N/D#

Problema resolvido.

 
Postado : 03/04/2014 8:38 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Que bom que está resolvido.

De qualquer forma, eu tinha feito um código, mas fui almoçar e não postei. Creio que pode ser mais rápido, se te interessar:

Sub atualizar_GT()
Application.ScreenUpdating = False

Dim x As Long, lastrow As Long, nome() As String
lastrow = Cells(Rows.Count, 1).End(xlUp).Row

'SUBSTITUI OS NOMES DOS GERENTES NAS CELULAS (MARIA e JOÃO)
For x = lastrow To 1 Step -1
    nome = Split("MARIA FULANO CICLANO", " ")
    Cells(x, 2).Value = nome(0) & "- ESTADO " & Cells(x, 13).Value
Next x
Application.ScreenUpdating = True
End Sub
 
Postado : 03/04/2014 9:57 am