Как сделать диапазон определенной области, которая была отфильтрована? - PullRequest
0 голосов
/ 21 октября 2019

Итак, прежде всего, я хочу написать код VBA, который позволит мне выбрать определенный диапазон листа Excel, а затем скопировать НЕКОТОРЫЕ необходимые значения на другой лист. Проблема в том, что в листе Excel, из которого я беру информацию, применены некоторые фильтры.

Итак, я нашел решение с помощью метода (?) .SpecialCells (xlCellTypeVisible), но проблема снова заключается в том, что, что это работает для 1 столбца, но не для диапазонов с более чем одним столбцом. Для диапазонов с более чем одним столбцом он выбирает только первую строку

Dim rng As Range
Set rng = src.Worksheets("l04").Range(src.Worksheets("l04").Range("Z7:AK7"), src.Worksheets("l04").Range("Z7:AK7").End(xlDown)).SpecialCells(xlCellTypeVisible)

Мой ожидаемый результат от этой строки кода должен состоять в том, что Range rng установлен от Z7 до AK7 вплоть домаксимальное количество строк, но только те, которые видимы.

Редактировать1: Изменено SpecialCell -> SpecialCells

Ответы [ 2 ]

1 голос
/ 21 октября 2019
Dim cell As Range
Dim lastRow As Long
With src.Worksheets("104")
    lastRow = .Cells(.Rows.Count, "Z").End(xlUp).row
    With .Range("Z7:AK" & lastRow)
        For Each cell In .Columns(1).SpecialCells(xlCellTypeVisible)
            Debug.Print Intersect(.Cells, cell.EntireRow).Address ' change this to what you actually need to grab from each visible cell
        Next
    End With
End With
0 голосов
/ 21 октября 2019

Исходя из некоторых подсказок в вашем вопросе, вы можете обнаружить, что использование метода пересечения выгодно.

Dim rng as Range

With src.Worksheets("l04")

    'gets all visible cells within the used range on your sheet    
    set rng = .UsedRange.SpecialCells(xlCellTypeVisible) 

    'Use the Intersect method to select specific columns
    set rng = Intersect(rng, .range("AB:AB, AD:AD"))

End With

Примечание. Это не приведет к выбору до последней строки (т. Е. Строки 1 048 576), только допоследняя строка с данными в указанном диапазоне.

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