Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 19:30   #1
Ivan Dulin
 
Регистрация: 01.04.2012
Сообщений: 9
По умолчанию Ускорение макроса Copy Paste

Добрый день. Копирую колонки с одного листа на другой.
Макрорекордер нашептал мне делать так:

Код:
Sub qw()
    Sheets("Sheet1").Select
    Columns("D:D").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Columns("D:D").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
Вот только мне нужно делать кучу таких копипастов (я их закину в цикл for next). Нужен более рациональный способ чтоб макрос не выполнялся несколько секунд. Нужно голое копирование информации без этой беготни по листам и выборов колонок.

Подскажите пожалуйста правильный код. Заранее спасибо
Ivan Dulin вне форума Ответить с цитированием
Старый 21.05.2012, 19:51   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вообще-то можно так:
Код:
Sub qw()
    Sheets("Sheet2").Columns("D:D").Value = Sheets("Sheet1").Columns("D:D").Value
End Sub
Но это не совсем быстро.
Можно обрезать лишнее, взять только из usedrange - но вопрос: куда выгружать?
UsedRange бывает не начинается с первой строки.
Ещё вариант - взять с первой строки до последней заполненной в столбце D в массив, и соответственно выгрузить его в первую строку.

Вот это быстро:
Код:
Sub tt()
    Dim a()
    With Sheets("Sheet1")
        a = Range(.[d1], .Range("D" & .Rows.Count).End(xlUp)).Value
    End With
    Sheets("Sheet2").[d1].Resize(UBound(a), 1) = a
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 21.05.2012 в 19:56.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорение макроса ymnuhj Microsoft Office Excel 5 12.05.2012 00:48
Не могу заставит работать copy/paste в Excel. Код внутри. Meta2 Microsoft Office Excel 9 01.11.2010 18:28
copy-paste. Оптимизация! mephist Microsoft Office Excel 3 15.07.2009 05:02
Облом Copy&Paste SHEI'TI Microsoft Office Word 2 24.09.2007 14:16