Перед копированием диапазона вы можете проверить, чтобы было больше видимых строк, чем в строке заголовка. Установите диапазон в переменную, затем посчитайте количество видимых ячеек в диапазоне, чтобы убедиться, что есть строки для копирования. Кроме того, как указал JvdV, вы должны использовать N1
в качестве начала. При копировании видимых ячеек в диапазоне вы всегда должны использовать Offset
, чтобы не копировать строку заголовка, и Resize
, чтобы не копировать пустую ячейку внизу из-за смещения. Вот базовый c пример того, как выполнить sh вашу задачу.
Dim rng As Range
Set rng = ThisWorkbook.Sheets(1).Range("D1:D" & ThisWorkbook.Sheets(1).Range("D" & ThisWorkbook.Sheets(1).Rows.Count).End(xlUp).Row)
If rng.SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
rng.Resize(rng.Cells.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
End If