Пожалуйста, убедитесь, что я уверен в режиме копирования автофильтра

#excel #vba

#excel #vba

Вопрос:

Мне просто нужно подтверждение от вас, ребята!

У меня 3000 строк, и мой макрос должен скопировать все содержимое с 1500 до 2500 строк на другой лист, условие таково: я установил автофильтр для листа, теперь некоторые ячейки невидимы, поэтому на листе отображаются только отфильтрованные строки, поэтому некоторые строки от 1500 до 2500 являютсяневидимый из-за режима автофильтра. и теперь мой макрос должен скопировать все содержимое от 1500 до 2500 строк, даже если строки невидимы из-за auotfilter.

Я просто выполнил обычную операцию копирования вставки на отфильтрованном листе, и он скопировал все строки от 1500 до 2500, которые также невидимы, так ли это работает? операция копирования, вставки копирует все ячейки, даже если установлены фильтры? Я просто хотел убедиться, потому что вчера он скопировал только отфильтрованные строки, а сегодня скопировал все строки, так что я просто немного смущен

Я погуглил, но все, что я нашел, это копировать видимые ячейки специального типа для режима автофильтра. не совсем на мой вопрос

Ответ №1:

Если у вас активен фильтр и вы выбираете полные видимые строки x ..y, вы заметите не один мигающий кадр, отображающий один диапазон, а несколько мигающих полей …. и действительно, ручное действие Ctrl-C / Ctrl-V скопирует только видимые строки.

Для кода VBA все по-другому. Попробуйте это:

 Sub test()
Dim SR As Range ' source range

    ' each cell of the Autofiltered range which is visible
    For Each SR In ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
        ' rows between 1500 and 2500
        If SR.Row >= 1500 And SR.Row <= 2500 Then
            ' do the needfull 
            Debug.Print SR.Row
        End If
    Next SR
End Sub
  

С уважением

Комментарии:

1. Я очень четко объяснил, что мне нужна вся дата, а не только видимые ячейки, но спасибо за вашу помощь

2. итак, вы просто переписываете для каждого в For Each SR In ActiveSheet.AutoFilter.Range.Cells