Erro em tempo de ex...
 
Notifications
Clear all

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


Fabiano
Posts: 88
Registered
Topic starter
(@alanisfcsm)
Trusted Member
Entrou: 6 anos atrás

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

 

Responder
5 Respostas
DJunqueira
Posts: 96
Registered
(@dmorais)
Trusted Member
Entrou: 3 meses atrás

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

Responder
1 Responder
Fabiano
Registered
(@alanisfcsm)
Entrou: 6 anos atrás

Trusted Member
Posts: 88

@dmorais 

Dê uma luz. 😓 

Responder
DJunqueira
Posts: 96
Registered
(@dmorais)
Trusted Member
Entrou: 3 meses atrás

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.

Responder
EdsonBR
Posts: 913
Moderator
(@edsonbr)
Prominent Member
Entrou: 6 anos atrás

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.

Responder
1 Responder
Fabiano
Registered
(@alanisfcsm)
Entrou: 6 anos atrás

Trusted Member
Posts: 88

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.

 

Responder