Notifications
Clear all

[Resolvido] Erro em tempo de execução '13': Tipos incompativeis.

6 Posts
3 Usuários
0 Reactions
1,306 Visualizações
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Olá

o código funciona, mas aparece: "Erro em tempo de execução '13': Tipos incompatíveis." em:

y = dia.Range("I" & x).Value - dia.Range("I" & x - 1).Value

😰

 

Sub InsertRows()

    Dim x As Long, y As Long
    Dim dia As Worksheet
    Set dia = Sheets("25")

For x = dia.Range("I" & Rows.Count).End(xlUp).Row To 2 Step -1
      y = dia.Range("I" & x).Value - dia.Range("I" & x - 1).Value

If y > 1 Then dia.Range("I" & x).Resize(y - 1).EntireRow.Insert xlShiftDown
If y > 5 Then dia.Range("I" & x).Resize(y - 1).EntireRow.Delete

Next

End Sub

 

Este tópico foi modificado 3 anos atrás 2 vezes by Fabiano
 
Postado : 30/11/2021 3:19 pm
DJunqueira
(@dmorais)
Posts: 0
Active Member
 

Vc está usando uma mesma variável p/ trabalhar como inteiro e intervalo (range), assim dá erro.

 
Postado : 30/11/2021 11:43 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

@dmorais 

Dê uma luz. 😓 

 
Postado : 01/12/2021 8:21 am
DJunqueira
(@dmorais)
Posts: 0
Active Member
 

Veja bem, programação não é o meu forte, mas o q eu posso te ajudar é o seguinte vc tem q declarar sua variável como 'range' e não long e a variável q vc for usar p/ fazer alguma contagem use como 'integer', use 'long' p/ contas mais complexas. Basicamente esse é o seu problema.

 
Postado : 01/12/2021 2:23 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

O raciocínio do @Fabiano está correto, pois y estaria recebendo não um objeto Range, mas um Value subtraído de outro Value. Então, provavelmente o problema esteja em que em alguma célula do intervalo varrido haja algum texto e não um número. Ou, o que é mais provável, é que seja um número mas que esteja com alguma "sujeira" como espaços em branco ou caracteres invisíveis ou ainda um número cujo formato esteja como texto.

Para melhor avaliação, procure sempre postar um modelo com pelo menos uma amostragem de seus dados, ok?

Quanto à questão Long x Integer, na verdade, no VBA declarar como Long é mais vantajoso do que como Integer, não só pela performance e maior amplitude da última em relação à primeira mas pq, internamente, o VBA acaba convertendo Integer em Long automaticamente (com restrições de alcance, obviamente). Não deveria, mas é fato conhecido que o faz.

 
Postado : 01/12/2021 9:09 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Acho que entendi. Na verdade o código não é meu peguei na net. Vou revisar desde o inicio

Muito obrigado @edsonbr , valeu pela paciência.

 

 
Postado : 02/12/2021 2:58 pm