#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