Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить отфильтрованный диапазон в объект Range / 9 сообщений из 9, страница 1 из 1
28.08.2017, 13:22
    #39511587
Даниил Пакоv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Подскажите пожалуста, как я могу получить отфильтрованный диапазон в переменную типа Range?
...
Рейтинг: 0 / 0
28.08.2017, 13:34
    #39511600
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Даниил Пакоv,

SpecialCells(xlCellTypeVisible)
...
Рейтинг: 0 / 0
28.08.2017, 15:09
    #39511718
Даниил Пакоv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Не выходит что то у меня.
Вот отбираю записи
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub ФилтрПоУслуге(НазваниеУслуги As String)
 
 
 Dim MyRng As Range
 Set MyRng = Nothing
 
 
 Set MyRng = ActiveWorkbook.Worksheets("Выполнено").Range("$A$5:$N$" & GetLastRow("Выполнено"))
 
 MyRng.AutoFilter Field:=8, Criteria1:=НазваниеУслуги
 Set ReSultRng = MyRng.SpecialCells(xlCellTypeVisible)
 MyRng.AutoFilter


Модератор: Учимся использовать тэги оформления кода - FAQ
А дальше как?
Как обойти оотфильтрованные записи ReSultRng в цикле, помогите пожалуста!
...
Рейтинг: 0 / 0
30.08.2017, 03:55
    #39512552
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Во первых, если вы хотите "обойти именно отфильтрованные записи" - то автофильтр в это время должен быть "пока еще наложен". То есть до снятия фильтра нужно выполнить что-то вроде
Код: vbnet
1.
2.
3.
For Each myRow in ReSultRng.Rows
    ...
Next


Если надо просто запомнить данные "на будущее", и обработать потом, а фильтр сбросить, то можно диапазон ReSultRng куда-нибудь скопировать, в том числе и в память:
Код: vbnet
1.
myArray = ReSultRng.Value
...
Рейтинг: 0 / 0
30.08.2017, 09:05
    #39512587
Даниил Пакоv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Благадарю, а какого типа должен быть mArray?
...
Рейтинг: 0 / 0
30.08.2017, 10:06
    #39512613
Даниил Пакоv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Dim mArray As Variant ?
...
Рейтинг: 0 / 0
30.08.2017, 10:20
    #39512620
Даниил Пакоv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Описал я его как Dim mArray(), но туды скопировалась только первая строчка отфильтрованного диапазона...(
...
Рейтинг: 0 / 0
31.08.2017, 07:55
    #39513136
Даниил Пакоv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Еще раз, пожалуйста поподробнее... Отфильтровываю записи так

MyRng.AutoFilter Field:=8, Criteria1:=МойФильтр
Set ReSultRng = MyRng.SpecialCells(xlCellTypeVisible)

Пытаюсь их перебрать так

For Each myrow In ReSultRng.Rows
With myrow
i = i + 1
v = .Value

End With
Но в итоге пробегаю весь лист (так, как будто фильтра не было)!!!

Хотя при использовании MyRng.Copy
и Sheet("NewSheet").Paste
на лист копируются только отфильтрованный набор записей
В чем я ошибаюсь, помогите пожалуста
...
Рейтинг: 0 / 0
31.08.2017, 09:02
    #39513177
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить отфильтрованный диапазон в объект Range
Даниил Пакоv, я уже дал вам ссылку, пожалуйста используйте оформление кода.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить отфильтрованный диапазон в объект Range / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]