Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: synthex от 27 октября 2018, 14:47

Название: Excel VBA Макросы: Почему происходит ошибка overflow?
Отправлено: synthex от 27 октября 2018, 14:47
Почему в этом коде происходит ошибка overflow:?

Sub Макрос()

    Dim sh As Worksheet, lr As Integer
   
    Set sh = Worksheets(1)
    lr = sh.Range("A" & sh.Rows.Count).End(xlUp).Row

End Sub
Название: Re: Excel VBA Макросы: Почему происходит ошибка overflow?
Отправлено: Администратор от 27 октября 2018, 15:07
На вашем эксель-листе много данных и номер последней строки с данными больше 65 тысяч. В переменную с типом данных Integer можно записать число до 65 тысяч.

Вместо типа данных Integer используйте тип данных Long:
Dim lr As Long

Используйте всегда тип данных Long. Тип данных Integer имеет смысл использовать, если в макросе много кода и нужно экономить место в оперативной памяти. Такое может потребоваться в компьютерных играх, где огромное кол-во кода; для макроса такая экономия оперативной памяти не актуальна.
Название: Re: Excel VBA Макросы: Почему происходит ошибка overflow?
Отправлено: synthex от 27 октября 2018, 15:10
спасибо