powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Insert/Delete строк в автофильтре.
24 сообщений из 24, страница 1 из 1
Insert/Delete строк в автофильтре.
    #35665903
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автофильтр скрывает какие-то строки.
Попытки вставить или удалить строку вызывают Exception.
Как лечить?

P.S. предварительно вызваны:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Interactive = False
Application.UserControl = False
Application.Calculation = xlCalculationManual
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666062
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Убрать фильтр
2. Вставить строку
3. Снова поставить фильтр
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666078
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,

но фильтраж уже был применён.
его (фильтраж) как то можно предварительно сохранять ?
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666115
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
Dim FilterRng as Range
Set FilterRng = Range(.......).SpecialCells(xlCellTypeVisible)
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666117
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUЕвгений_Анатольевич,

но фильтраж уже был применён.
его (фильтраж) как то можно предварительно сохранять ?

ну ведь это всего ишь переменные хранимые в памяти ;) Посмотрите как это делает сам Excel.. Запустите макрос, сделайте фильтр, отключите фильтр. Остановите макрос и посмотритье код ;)
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666179
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,

там всего 1 стандартная функция. Типа "Сделать автофильтр".
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666186
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

какой оффис? 2003?
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666369
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,
да
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666506
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

AutoFilter Object
See AlsoPropertiesMethodsEventsSpecificsWorksheet
AutoFilter
Multiple objects


Represents autofiltering for the specified worksheet.

Using the AutoFilter Object
Use the AutoFilter property to return the AutoFilter object. Use the Filters method to return a collection of individual column filters. Use the Range method to return the Range object that represents the entire filtered range. The following example stores the address and filtering criteria for the current filtering and then applies new filters.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
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

w.AutoFilterMode = False
w.Range("A1").AutoFilter field:= 1 , Criteria1:="S"

End Sub

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. The following example uses the values stored in module-level variables in the previous example to restore the original autofiltering to the Crew worksheet.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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

Из стандартного Help Оффис 2003.. :)
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35666523
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

Кроме того

AutoFilter Method
See AlsoApplies ToExampleSpecificsFilters a list using the AutoFilter. Variant.


Note Apply the AutoFilter property to a Worksheet object to return an AutoFilter object.


expression. AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown )
expression Required. An expression that returns one of the objects in the Applies To list.

Field Optional Variant. The integer offset of the field on which you want to base the filter (from the left of the list; the leftmost field is field one).

Criteria1 Optional Variant. The criteria (a string; for example, "101"). Use "=" to find blank fields, or use "<>" to find nonblank fields. If this argument is omitted, the criteria is All. If Operator is xlTop10Items, Criteria1 specifies the number of items (for example, "10").

Operator Optional XlAutoFilterOperator.

XlAutoFilterOperator can be one of these XlAutoFilterOperator constants.
xlAnd default
xlBottom10Items
xlBottom10Percent
xlOr
xlTop10Items
xlTop10Percent
Use xlAnd and xlOr with Criteria1 and Criteria2 to construct compound criteria.

Criteria2 Optional Variant. The second criteria (a string). Used with Criteria1 and Operator to construct compound criteria.

VisibleDropDown Optional Variant. True to display the AutoFilter drop-down arrow for the filtered field. False to hide the AutoFilter drop-down arrow for the filtered field. True by default.

Remarks
If you omit all the arguments, this method simply toggles the display of the AutoFilter drop-down arrows in the specified range.

Example
This example filters a list starting in cell A1 on Sheet1 to display only the entries in which field one is equal to the string "Otis". The drop-down arrow for field one will be hidden.

Код: plaintext
1.
2.
3.
Worksheets("Sheet1").Range("A1").AutoFilter _
    field:= 1 , _
    Criteria1:="Otis"
    VisibleDropDown:=False

Тоесть можно в массив записывать не только Criteria1 , как в предыдущем примере, но и все остальные параметры фильтра!
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35667238
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,

ого!
буду разбираться. спасибо.
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35670859
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,

какая-то фигня. Ругается на банальный код:

ActiveWorkbook.AutoFilterMode = False


Решил потом записать макрос (снятие автофильтра, потом выставление):
Range("B16").Select
Selection.AutoFilter
Selection.AutoFilter


Office действительно 2003й
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35670884
nporaMep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOU,

ActiveSheet вместо Activeworkbook попробуйте, фильтр применятся к диапазону на листе, а не к книге.
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35670930
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nporaMep,

выдаётся ошибка "Нельзя установить свойство у WorkSheet"
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35670945
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU ActiveWorkbook .AutoFilterMode = False

А где вы в помощи видели, что обращение идет к объекту ActiveWorkbook ??? о.О

Код: plaintext
1.
Set w = Worksheets("Crew")
w.AutoFilterMode = False
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671074
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь за недопонимание!

1) действительно надо WorkSheet, а не WorkBook
2) ActiveSheets.AutoFilterMode = False работает.
3) Ошибка вызывается при указании true. Хотя решаемо вызовом Range.AutoFilter потом

P.S. исследую дальше.
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671293
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно.

Делаю автофильтр. w.AutoFilter.Filters.Count = 15.
Однако .Item(f).On равно False у всех. Из-за чего это может быть?

w.AutoFilterMode = False вызываю позже.
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671354
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дааа....

опять сглупил (наверное).
в моём случае автофильтр был, но ни один из столбцов не "включен". Поэтому On = False.
Но как правильно опять включать автофильтр (после выключения), просто Range.AutoFilter ?
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671355
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUДелаю автофильтр. w.AutoFilter.Filters.Count = 15.
Не понятно.

Это что такое и зачем? Вы прочтите еще раз для чего создана в примере функция и разберитесь, что она делает..
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671361
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUдааа....

опять сглупил (наверное).
в моём случае автофильтр был, но ни один из столбцов не "включен". Поэтому On = False.
Но как правильно опять включать автофильтр (после выключения), просто Range.AutoFilter ?

полагаю так в примере вызывается фильтр с заданными критериями:
Код: plaintext
w.Range("A1").AutoFilter field:= 1 , Criteria1:="S"

п.с. не проверял..
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671475
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,

>Не понятно.
>Это что такое и зачем? Вы прочтите еще раз для чего
>создана в примере функция и разберитесь, что она делает..

Не... это в смысле "на такой-то момент w.AutoFilter.Filters.Count равно 15"
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671503
Евгений_Анатольевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

хорошо, спросим по-другому:
что такое w.AutoFilter.Filters.Count ?
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35671679
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_Анатольевич,

количество "элементов фильтра". На практике - количество столбцов в фильтре.
...
Рейтинг: 0 / 0
Insert/Delete строк в автофильтре.
    #35674841
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё разобрался, всем большое спасибо!

особенно, 2 Евгений_Анатольевич.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Insert/Delete строк в автофильтре.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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