3

У меня есть сырой выходной лист преобразования данных (с PDF2XL). Лист имеет 240 тыс. Строк. Сам скрипт прекрасно работает, но только если я объявлю переменную "LastRowI" до 30 КБ. Для более высоких значений я получаю "Ошибка 6 переполнения"

Я использую стандартный способ получения последнего ряда.

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

Поэтому мой вопрос заключается в том, как получить последнюю строку большого листа Excel без ошибки переполнения?

1 ответ1

6

Ваша проблема в том, что в VBA тип Int является 16-разрядным полем со знаком, поэтому он может содержать значения только от -32,768 до +32,767. Измените переменную LastRow на Long , которая является 32-разрядным полем со знаком и может содержать значения от -2 147 483 648 до +2 147 483 647.

Интуитивно вы думаете, что использование int вместо long может быть более эффективным, так как первый меньше второго, но, как вы можете видеть в этом ответе, VBA в любом случае конвертирует int в long s, так что вы можете также используйте long все время, когда имеете дело с целыми числами (целыми числами).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .