VBA Localiza a última linha em uma planilha muito grande (erro de estouro)

2

Eu tenho a saída bruta de uma folha de conversão de dados (com PDF2XL). A folha tem 240k linhas. O próprio script é executado corretamente, mas somente se eu declarar a variável "LastRowI" até 30k. Para valores mais altos, recebo um "Error 6 Overflow"

Eu uso a maneira padrão de obter a última linha.

LastrowC = Worksheets("control").Cells(Rows.Count, "A").End(xlUp).Row

Então, minha pergunta é como obter a última linha de uma planilha grande do Excel sem produzir um erro de estouro?

    
por Mario Adenauer 04.08.2016 / 13:47

1 resposta

5

O problema é que, no VBA, o tipo Int é um campo de 16 bits sinalizado, portanto, ele só pode manter valores de -32.768 a +32.767. Altere sua variável LastRow para Long , que é um campo de 32 bits assinado e pode conter valores de -2.147.483.648 para +2.147.483.647.

Intuitivamente, você acha que usar um int em vez de um long pode ser mais eficaz, pois o primeiro é menor que o segundo, mas como você pode ver explicado nesta resposta , o VBA converte int s para long s de qualquer forma, assim você pode usar long o tempo todo quando você lida com inteiros (números inteiros ).

    
por 04.08.2016 / 13:57