Я пытаюсь оптимизировать некоторый код сортировки данных, исходный код выглядит так, как будто он был «написан» с использованием функции Excel «Запись макроса».VBA превращает разделы записанного макроса в нечто более эффективное
Ниже приведен пример из кода.
Range("A12").Offset(z, 0).Select
Selec.Resize(Selection.Rows.Count, Selection.Columns.Count + (X2 - 1)).Select
Selection.Copy
Range("C4").Offset(y, 0).Select
ActiveSheet.Paste
Для того, чтобы сделать этот код более эффективным, я должен переписать этот раздел, чтобы привлечь переменный диапазон, что его .Value равно данные селекционных?
Переменные X2, z и y используются как часть функции копирования и постепенно увеличиваются, чтобы облегчить чтение конечного продукта. Они изменены в другом месте модуля.
Я просто хотел бы увидеть некоторые предложения относительно того, что вы думаете, что я должен делать.
Я прочитал очень популярный вопрос «Как избежать использования Select in Excel VBA Macros» здесь, и я просто ищу дальнейшие советы.
(How to avoid using Select in Excel VBA macros)
Благодаря
Это было бы:. 'Range ("A12") Смещение (г, 0) .Resize (1, X2) .Copy назначения : = Диапазон («C4»). Смещение (y, 0) ' – Rory
Спасибо, это похоже на работу! Я приступлю к тому, чтобы делать подобные вещи остальным. Спасибо – lewisthegruffalo
Hiya @Rory я не думаю, что вы могли бы показать мне, как вы могли бы это сделать? Сброс (z, 0) .Выберите Selection.Resize (Selection.Rows.Count, Selection.Columns.Count + (X2). - x - 1)). Выберите Selection.Copy Диапазон («C4»). Смещение (y, X2 - a). Выберите ActiveSheet.Paste – lewisthegruffalo