Почему в этом коде происходит ошибка 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
На вашем эксель-листе много данных и номер последней строки с данными больше 65 тысяч. В переменную с типом данных Integer можно записать число до 65 тысяч.
Вместо типа данных Integer используйте тип данных Long:
Dim lr As Long
Используйте всегда тип данных Long. Тип данных Integer имеет смысл использовать, если в макросе много кода и нужно экономить место в оперативной памяти. Такое может потребоваться в компьютерных играх, где огромное кол-во кода; для макроса такая экономия оперативной памяти не актуальна.
спасибо