Vba: проблема с доступом к отсортированным и дважды отфильтрованным значениям столбца - PullRequest
0 голосов
/ 14 октября 2019

Я работаю над 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

сверху, доступ работает правильно, но мне нужна эта строка кода, иначе сортировка будет неправильной.

Что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...