У меня есть такая функция:
Function GetFilteredRange(ByVal id As Integer) As Range
Worksheets("Sheet1").Range("C20").CurrentRegion.Select
Selection.AutoFilter Field:=14, Criteria1:=id
Dim rng As Range
Set rng = Worksheets("Sheet1").AutoFilter.Range.Rows.SpecialCells(xlCellTypeVisible)
Selection.AutoFilter
Set GetFilteredRange = rng
End Function
Такая функция, похоже, не возвращает полный результат.Он возвращает только диапазон с одной строкой, где ожидаются две строки.
Что я обнаружил, так это то, что автоматически отфильтрованный результат может иметь (или имеет несколько областей).В этом случае я проверил, есть ли в диапазоне автофильтрации несколько областей, что было истинно (2 области).Таким образом, чтобы вернуть полный результат, я предполагаю, что мне нужно пройтись по всем областям и добавить эти области в диапазон, который в конечном итоге возвращается в результате выполнения функции.Это путь или есть более простой метод?
Мне не нужно копировать диапазон, просто нужно перебрать возвращаемый диапазон, чтобы использовать значения полей.
ОБНОВЛЕНИЕ:
Я пришел к выводу, что это невозможно (на основании этого поста ).Каждый диапазон должен быть частью рабочего листа.Другими словами, я должен скопировать контент в другой диапазон и работать через этот диапазон.