Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
mr. Grey
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 3
#1

Макрос эксель. Фильтровка

20.01.2010, 11:33. Просмотров 1955. Ответов 5
Метки нет (Все метки)

Люди плиз, как сделать по событию перехода на второй лист, что бы автофильтр был равен автофильтру на первом листе(только по одной колонке). Т.е. Выбираем автоф. на первом листе, а он автоматом ставит фильтр при переходе на втором листе. Не могу разобраться

Worksheets("Лист2").Range("A1").AutoFilter field:=1, Criteria1:=????????
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 11:33
Ответы с готовыми решениями:

Макрос для таблицы эксель с поиском
Привет, помогите, очень-очень срочно В эклеле таблица: номер документа,...

Макрос на сохранение двух листов эксель в отдельные файлы mht
Здравствуйте, как сделать что бы эксель 2003 сохранял выбранные листы (Лист1 и...

Спасите, пожалуйста, создать макрос, который запишет темы писем в Эксель
Помогите, пожалуйста, создать макрос, который запишет темы писем в Эксель. Я...

Макрос создания нового листа в Эксель с названием от 1 и далее нарастающим итогом
Добрый вечер! Очень нужна помощь, уважаемые программисты!!! Необходим макрос...

Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос
Необходимо изменить ниже приведённый макрос, взятый с форума. Необходима...

5
analyst
435 / 142 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
20.01.2010, 18:57 #2
Можно попробовать запомнить критерии используемые для фильтрации в массив,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
 
Sub ChangeFilters()
 
Set w = Worksheets("Crew")
With w.AutoFilter
    currentFiltRange = .Range.Address
    With .Filters
        ReDim filterArray(1 To .Count, 1 To 3)
        For f = 1 To .Count
            With .Item(f)
                If .On Then
                    filterArray(f, 1) = .Criteria1
                    If .Operator Then
                        filterArray(f, 2) = .Operator
                        filterArray(f, 3) = .Criteria2
                    End If
                End If
            End With
        Next
    End With
End With
а потом взять критерии из соответствующего столбца и применть их к новому фильтру.
1
mr. Grey
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 3
20.01.2010, 19:35  [ТС] #3
Спасибо Это пример из HELP. Я его изучал, но как использовать не понял.
0
analyst
435 / 142 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
21.01.2010, 13:36 #4
Использовать его очень легко, но для начала нужно разобраться что значит автофильтры равны?
0
mr. Grey
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 3
21.01.2010, 22:16  [ТС] #5
Цитата Сообщение от analyst Посмотреть сообщение
Использовать его очень легко, но для начала нужно разобраться что значит автофильтры равны?
Равны, значит: На первом и на втором листе в одном и том же(допустим в первом) столбце информация совподает. Поэтому если на первом выбирается автофильтр, то на втором при переходе нужно тоже самое автоматом.
0
analyst
435 / 142 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
22.01.2010, 11:22 #6
Тогда раз вы разбирались с примером из мануала, который я привел, то вы должны были заметить пример ниже:
The following example uses the values stored in module-level variables in the previous example to restore the original autofiltering to the Crew worksheet.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub RestoreFilters()
Set w = Worksheets("Crew")
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
    If Not IsEmpty(filterArray(col, 1)) Then
        If filterArray(col, 2) Then
            w.Range(currentFiltRange).AutoFilter field:=col, _
                Criteria1:=filterArray(col, 1), _
                    Operator:=filterArray(col, 2), _
                Criteria2:=filterArray(col, 3)
        Else
            w.Range(currentFiltRange).AutoFilter field:=col, _
                Criteria1:=filterArray(col, 1)
        End If
    End If
Next
End Sub
p.s. страничка с этим хелпом называется AutoFilter Object
Этот пример показывает как создать точно такой же фильтр, но на том же месте. Если вам нужно создать его в другом месте, то этот случай тоже оговорен в мануале:
To create an AutoFilter object for a worksheet, you must turn autofiltering on for a range on the worksheet either manually or using the AutoFilter method of the Range object.
Успехов
1
22.01.2010, 11:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2010, 11:22

Макрос: из PowerPoint развернуть Exel и вызвать уже в нём макрос
Собственно сабж. Работая в презентации PowerPoint нужно по клику на кнопку с...

Макрос, чтобы другой макрос распихал сам по N файлам
Может эта тема уже тут звучала, да поиск не помог... Просто проблема в том, что...

Макрос, запускающий макрос из другого закрытого файла
Здравствуйте. Использую Office 2007. Поискал на форуме, не нашел ответа....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru