Я работаю над VBA, и задача, которую мне нужно выполнить, - сначала отсортировать значения столбца внутри листа, затем отфильтровать значения внутри другого столбца, затем снова отфильтровать внутри другого столбца и затем получить доступ к элементам. внутри только что отфильтрованного столбца. Я делаю следующее:
Сортировка:
Worksheets(1).AutoFilter.Sort.SortFields.Clear
Worksheets(1).AutoFilter.Sort.SortFields.Add2 Key _
:=Range("H1:H" & Range("H" & Rows.Count).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(1).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Первый фильтр:
Worksheets(1).Range("A2:AB" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=11, Criteria1:="variable1"
Второй фильтр:
'Worksheets(1).Range("A2:AB" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=5, Criteria1:= _ "variable2", Operator:=xlAnd
Активация значений:
'Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Activate
Доступ к значениям:
For Each z In Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
'MsgBox (z.Value)
При активации столбца с двойной фильтрацией активируются все листы, а не только интересующий меня столбец с фильтрами. Принимая во внимание, чтоесли я удаляю:
Worksheets(1).AutoFilter.Sort.SortFields.Clear
сверху, доступ работает правильно, но мне нужна эта строка кода, иначе сортировка будет неправильной.
Что происходит?