Страницы: 1
RSS
копирование диапазона с помощью VBA
 
Добрый день, подскажите, пожалуйста, как выделить и скопировать в другое место диапазон с данными без сохранения формата?
 
Копировать- специальная вставка-значение
 
Добрый день. Можно как-то так, макросом:
Код
Sub CopyRange()
Range("B1").CurrentRegion.Offset(1,0).Copy Range("D2")
End Sub

Если же требуется только значения копировать, и принципиально важно, чтобы в точке назначения формат ячеек не менялся, то так:
Код
Sub CopyRange()
Range("B1").CurrentRegion.Offset(1, 0).Copy
Range("D2").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub
Изменено: Пытливый - 15.05.2019 13:32:00
Кому решение нужно - тот пример и рисует.
 
Пытливый, спасибо, а как что бы без сохранения формата?
 
Пытливый, спасибо большое, не совсем то, что хотела, если рядом ячейки заполнены, то выделяет не только желаемые колонки, а и соседние данные (((
 
Алиса82, если диапазон цельный (одна область, как в примере)то можно совсем быстро и просто:
[d2:d14].Value2=[b2:b14].Value2

Цитата
Алиса82: Не совсем то, что хотела
"виноват" [b1].CurrentRegion - программный аналог нажатия Ctrl+A в ячейке "B1" — прописывайте адреса диапазонов другим способом…
Изменено: Jack Famous - 15.05.2019 14:29:20
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famou, не пойму куда это выражение вставлять. Наверное в примере я неточно указала что хочу. Мне нужно скопировать часть столбца например B2:B14 в какое то другое место,  например  D2:D14  без сохранения формата.  
 
Если вы четко знаете размер и адрес диапазона, который хотите скопировать, то прямо его и указывайте:
Код
Range("B2:B14").Copy
Range("D2").PasteSpecial (xlPasteValues)
Application.CutCopyMode=False

Если вы диапазон для копирования не знаете (как я предположил в примере), то его надо сначала определить. Я его в коде определял от текущего диапазона относительно ячейки В1 (поскольку в примере данные для копирования были отделены пустыми строками/столбцами от остального, то этот метод сработал). Если у вас данные как-то по-другому располагаются, то хорошо бы в примере показывать как именно, чтоб не переделывать потом код по десять раз. :)
Кому решение нужно - тот пример и рисует.
 
Цитата
Алиса82: куда это выражение вставлять
очевидно, раз "с помощью VBA", то в макрос. Так, например, макрос …
Код
Sub t()
[d2:d14].Value2=[b2:b14].Value2
End Sub
… перенесёт только значения на активном листе из диапазона "b2:b14" в диапазон "d2:d14".

Если проблемы с использованием макросов, то учим матчасть
Изменено: Jack Famous - 15.05.2019 15:51:29
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Пытливый, Jack Famous, спасибо!
Страницы: 1
Наверх