Как скопировать видимый диапазон?!

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Gerek
Сообщения: 20
Зарегистрирован: 02 июл 2008, 11:30

Помогите, пожалуйста, в решении следующей проблемы. Есть лист с данными более 2000 строк, подводятся итоги по одной из колонок, в дальнейшем эти итоги нужно скопировать новый лист. На данный момент приходиться, с помощью такого макроса:

Sub Макрос1()
Selection.Copy
Sheets("Лист1").Select
Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

копировать по одной строке, так как при попытке скопировать все видимые строчки копируются вообще все строчки. Каким образом можно скопировать весь видимый диапазон (итоги) :confused: Заранее спасибо!
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Попробуйте что-то вроде этого:

Код: Выделить всё

[color=darkblue]Sub[/color] test()
    [color=darkblue]Dim[/color] sh [color=darkblue]As[/color] Worksheet, ra [color=darkblue]As[/color] Range: [color=darkblue]Set[/color] sh = ActiveSheet
    Application.ScreenUpdating = [color=darkblue]False[/color]
    [color=darkblue]Set[/color] ra = Intersect(sh.UsedRange, sh.Cells.SpecialCells([B][color="Red"]xlCellTypeVisible[/color][/B]))
    ra.EntireRow.Copy Worksheets("Лист2").Cells(1)
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

Вариант, предложенный EducatedFool выдаст ошибку, если кроме скрытых строк на рабочем листе присутствуют еще и скрытые столбцы.
Предлагаю немного скорректировать код (если автор ответа не возражает).
Этот вариант чуть проще и не вызовет ошибки при скрытых строках и столбцах.

Код: Выделить всё

Sub test2()
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy Worksheets("Лист2").Cells(1)
End Sub
Ответить