Notifications
Clear all

Erro em tempo de Execução 13 - Tipos Incompativeis

14 Posts
4 Usuários
0 Reactions
1,958 Visualizações
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Boa noite.

Quando executo uma macro para apagar os dados de varias células da mesma planilha apresenta o erro: "Erro em tempo de Execução 13 - Tipos Incompatíveis".
Mas quando executo a mesma macro pela segunda vez, não apresenta o erro.

Sub Limpar()
'
' Limpar Macro
'

'
    Sheets("Objetivos").Select
    Range("B5:M6,B9:M43,B45:M45,Q6:AO17").Select
    Selection.ClearContents
    
    Sheets("Jan").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Fev").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Mar").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Abr").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Mai").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Jun").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Jul").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Ago").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Set").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Out").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Nov").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("Dez").Select
    Range("D6:J29,N6:P29,V6:AQ39,AI1,AO1:AO2").Select
    Selection.ClearContents
    Range("D6").Select
    
    Sheets("PDD").Select
    Range("A3:E69,G3:I69,A80:E113,G80:I113").Select
    Selection.ClearContents
    Rows("3:69").Select
    Range("A69").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Rows("80:113").Select
    Range("A113").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A3").Select
    
    Sheets("Ajuizamentos").Select
    Range("A6:I300").Select
    Selection.ClearContents
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
    ActiveWindow.ScrollRow = 6
    Range("A6").Select
    
    Sheets("Objetivos").Select
    ActiveWindow.SmallScroll Down:=-42
    Range("B5").Select
End Sub


 
Postado : 04/10/2016 6:02 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Ajuste o restante do codigo


Sub limpar()
Sheets("Objetivos").Range("B5:M6, B9:M43, B45:M45, Q6:AO17").ClearContents
End Sub

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.

 
Postado : 04/10/2016 6:57 pm
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Boa tarde, Marcelo Prudencio.

Agradeço seu empenho, mas o erro ainda persiste considerando sua sugestão. Quando executo a macro pela primeira vez apresenta a mensagem de erro, daí clico em Ok, contudo, nas demais vezes que executo a macro esta tudo normal. O erro aparece apenas na primeira execução da macro ao abrir a planilha.

Segue código alterado com o mesmo erro:


Sub Limpar()
'
' Limpar Macro
'

'
    Sheets("Objetivos").Range("B5:M6, B9:M43, B45:M45, Q6:AO17").ClearContents
    
    Sheets("Jan").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Fev").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Mar").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Abr").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Mai").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Jun").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Jul").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Ago").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Set").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Out").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Nov").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Dez").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("PDD").Range("A3:E69, G3:I69, A80:E113, G80:I113").ClearContents
    Rows("3:69").Select
    Range("A69").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Rows("80:113").Select
    Range("A113").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A3").Select
    
    Sheets("Ajuizamentos").Range("A6:I300").ClearContents
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
    ActiveWindow.ScrollRow = 6
    Range("A6").Select
    
    Sheets("Objetivos").Select
    ActiveWindow.SmallScroll Down:=-42
    Range("B5").Select
End Sub

 
Postado : 08/10/2016 10:38 am
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibilize seu arquivo.

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.

 
Postado : 08/10/2016 5:31 pm
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Boa noite.

Infelizmente não posso disponibiliza-lo... Mas deixo meus agradecimentos.

 
Postado : 08/10/2016 8:30 pm
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Boa noite.

Descobri o motivo do erro mas não consegui reparar. Tudo se deve a uma macro criada no VBA que não pode ser apagada, pois altera o tamanho da fonte ao acionar determinada célula:


Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Me.[V27:AQ29,V31:AQ31]) Is Nothing Then
       Select Case Target.Value
          Case Is < -99999, 99
             Target.Font.Size = 5
          Case Is > -99999, 99
             Target.Font.Size = 7
          Case Is = 0
             Target.Font.Size = 7
          Case " "
             Target.Font.Size = 7
       End Select
    End If
    Application.EnableEvents = True
 End Sub

 
Postado : 12/10/2016 6:32 pm
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Daí quando apago uma das células que esta no comando VBA apresenta o erro. Grato.

 
Postado : 12/10/2016 6:37 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Tente isso:

Dentro do código de limpar dados utilize essa instrução

On Error Resume Next

Isso faz pular o erro e executar o código

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.

 
Postado : 13/10/2016 3:18 am
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Infelizmente não deu certo.

 
Postado : 13/10/2016 6:44 pm
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Segue modelo do arquivo em anexo:

 
Postado : 13/10/2016 7:47 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente assim:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
   
    If Target.Cells.Count > 1 Then Exit Sub
   
 If Not Intersect(Target, Me.[A1:D10]) Is Nothing Then
       Select Case Target.Value
          Case Is < -99999, 99
             Target.Font.Size = 5
          Case Is > -99999, 99
             Target.Font.Size = 7
          Case Is = 0
             Target.Font.Size = 7
          Case " "
             Target.Font.Size = 7
       End Select
    End If
    Application.EnableEvents = True
 End Sub

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

 
Postado : 13/10/2016 10:57 pm
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Reinaldo poderia me explicar sua sugestão!

 
Postado : 14/10/2016 5:30 am
(@wilker-adm)
Posts: 17
Active Member
Topic starter
 

Agora apresentou outro erro (Erro em tempo de execução 1004: Erro de definição de aplicativo ou de definição de objeto):

Mas se refere a macro de limpar. Destaquei de amarelo o erro apresentado na linha da macro.


Sub Limpar()
'
' Limpar Macro
'


    Sheets("Objetivos").Range("B5:M6, B9:M44, B46:M46, Q6:AO17").ClearContents
 
    Sheets("Jan").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select

    Sheets("Fev").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Mar").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Abr").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Mai").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Jun").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Jul").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Ago").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Set").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Out").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Nov").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("Dez").Range("D6:J29, N6:P29, V6:AQ39, AI1, AO1:AO2").ClearContents
    Range("D6").Select
    
    Sheets("PDD").Range("A3:E69, G3:I69, A80:E113, G80:I113").ClearContents
    Rows("3:69").Select
    Range("A69").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Rows("80:113").Select
    Range("A113").Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A3").Select
    
    Sheets("Ajuizamentos").Range("A6:I300").ClearContents
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
    ActiveWindow.ScrollRow = 6
    Range("A6").Select
    
    Sheets("Objetivos").Select
    ActiveWindow.SmallScroll Down:=-42
    Range("B5").Select
End Sub

 
Postado : 14/10/2016 4:56 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Wilker, pelo modelo que vc anexou, o erro parece estar em que, ao clicar no botão "Limpar" o conteúdo do intervalo A1:D5 obviamente é apagado. Então como algumas células desse intervalo continham valores, ao serem apagados isso vai disparar o evento _Change da planilha onde há aquela estrutura Select Case. Só que Select Case não foi desenhado para trabalhar com intervalos de várias células nem matrizes, e sim uma expressão numérica ou de string que retorne um único valor de cada vez.
Se vc não deseja que o evento Change ocorra durante a "limpeza" dos ranges, desabilite eventos antes de aplicar os métodos ClearContents:

Sub Limpar()
   Application.EnableEvents = False
      Sheets("Planilha1").Range("A1:D5").ClearContents
      Sheets("Planilha1").Range("A6:D10").ClearContents
     Range("A1").Select
   Application.EnableEvents = True
End Sub

Obs.: Um detalhe que se observa mas que, apesar de não ter nada a ver com o problema postado, talvez vc queira corrigir é que na estrutura Select Case vc repete duas vezes o valor 99 na lista de expressões. Se vc quis usar 99 como sendo dois dígitos decimais que é o que imagino, deve lembrar-se que no VBA decimais são inseridos com ponto, não vírgula. Então ficaria Case Is < -99999.99 na primeira e da mesma forma, Case Is > -99999.99 na segunda. Se vc deixar como está, caso o valor seja exatamente 99, entrará já na primeira cláusula Case.

 
Postado : 16/10/2016 10:59 pm