Страницы: 1
RSS
Выборка видимого диапазона через SpecialCells(xlCellTypeVisible)
 
Доброго дня, всем!
Ребят, есть следующие строки, которые получил через фильтр:

1
2
3
4
15

Как видим, тут 5 строк и хочу их получить в массиве, пишу:
Код
Sub sa()
Dim x As Variant
x = ActiveSheet.Range("Таблица1").Rows.SpecialCells(xlCellTypeVisible)
MsgBox UBound(x)
Set x = Nothing
End Sub

Но у меня x = 4, что не соответствует действительности, как вы понимаете...

Можно ли получить значение без пропусков одним махом (без перебора), а именно 5.

Изменено: Azakia - 30.09.2025 09:31:07
 
Таким способом НЕсмежный диапазон взять в массив нельзя, только перебор
Тут варианты обсуждались
Согласие есть продукт при полном непротивлении сторон
 
Ну если через промежуточное копирование диапазона, то можно обойтись без перебора, но это не одним махом..
По вопросам из тем форума, личку не читаю.
 
Спасибо, ребят. Понял.

З.ы. Выкрутился тем, что отсортировал таблицу предварительно по нужному признаку, чтобы при фильтре не было "дыр" этих. Ну а в код уже добавил работу с фильтром и загрузкой в массив через спешлцелс. У кого вдруг такая же проблемка, то вот такое решение я для себя накидал:
Код
Dim x As variant
Dim u As String
Dim x, y, p As Long
For p = 1 To 200
   u = Worksheets(1).cells(p,1)
   Worksheets(2).ListObjects("Таблица1").Range.AutoFilter Field:=7, Criteria1:=u
      x = Worksheets(2).Range("Таблица1").Rows.SpecialCells(xlCellTypeVisible)
         ThisWorkbook.Worksheets(2).ListObjects("Таблица1").Range.AutoFilter Field:=7
            For y = 1 To UBound(x)
               ' необходимые действия
            Next y
    Set BD = Nothing
Next p
Изменено: Azakia - 01.10.2025 13:46:47
Страницы: 1
Читают тему
Наверх