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