Какие кнопки, ни элемент управления Forms, ни элемент управления ActiveX не должны влиять на используемый диапазон.
Известной проблемой является то, что Excel не очень хорошо отслеживает используемый диапазон. Любая ссылка на используемый диапазон через VBA сбрасывает значение до текущего используемого диапазона. Поэтому попробуйте запустить эту подпроцедуру:
Sub ResetUsedRng()
Application.ActiveSheet.UsedRange
End Sub
Если у вас не получится какое-то форматирование. Попробуйте очистить / удалить все ячейки после последней строки.
По поводу вышеизложенного также см .:
Совет разработчика Excel
Другой способ найти последнюю использованную ячейку:
Dim rLastCell As Range
Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
Измените направление поиска, чтобы найти первую использованную ячейку.