Установить возвращаемый объект диапазона из метода Copy() в VBA?
Я использовал метод Copy () для диапазона отфильтрованного списка в Excel 2003 с помощью макроса, и я хочу захватить возвращенный диапазон и подсчитать строки (чтобы я мог проверить, что скопировал больше одной строки. Однако я получаю ошибку "требуется объект".
Мне сообщили по ссылке VBA на веб-сайте Microsoft, что метод Copy() возвращает объект range. Однако, судя по коду, это не так. Пожалуйста, посоветуйте!
Спасибо.
For J = 1 To .ListObjects.Count
' Filter
.ListObjects(J).Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=CritRange
Set CopiedRange = .ListObjects(J).Range.Copy ' Object required error
If CopiedRange.Rows.Count > 1 Then
{etc...}
1 ответ:
Excel не возвращает объект range при выполнении операции Copy (). Я попытался протестировать диапазон для количества строк перед копированием, но это не сработало без учета специально видимых строк. Поэтому мне нужно было написать новую функцию:
Function CountVisibleRows(rg As Range) Dim NumRows As Integer ' Count visible cells in the first column, minus one to account for the header NumRows = rg.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 CountVisibleRows = NumRows End Function
Затем я проверил это на диапазоне перед копированием и определил количество строк, которые будут скопированы (поскольку метод Copy() по умолчанию копирует только видимые строки).