Страница 1 из 1

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

Добавлено: 23 июн 2009, 17:55
Gerek
Помогите, пожалуйста, в решении следующей проблемы. Есть лист с данными более 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: Заранее спасибо!

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

Добавлено: 23 июн 2009, 21:23
EducatedFool
Попробуйте что-то вроде этого:

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

[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]

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

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

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

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