Несмотря на то, что это было закрыто, я добавлю эти комментарии как ответ, а не как комментарий, учитывая длину этого ответа и необходимость форматирования. Ссылка правильно отмечает, что выбранный вами подход SpecialCells может быть проблематичным, я добавил исправление ниже. Кроме того, я добавил код, который будет проверять фактическое количество строк в xl2007, ссылка (написанная еще в 2002 году) в настоящее время фиксируется на 65536 строках, поскольку это был единственный номер строки в Excel, существовавший на данный момент
LastRow = Cells.SpecialCells (xlCellTypeLastCell) .Row
может применяться таким образом, чтобы гарантировать, что используемый диапазон правильно сбрасывается на последнюю ячейку
ActiveSheet.UsedRange
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
для обслуживания строк во всех версиях Excel (xl07 и xl10 имеют 1,048 миллионов строк)
LastRowColA = Cells(Rows.Count,"A").End(xlUp).Row
это приведет к ошибке, если лист пустой (т. Е. Не имеет значений для определения)
Dim rng1 As Range
Set rng1 = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rng1 Is Nothing Then
LastRow = rng1.Row
Else
'sheet is blank
End I