2015-02-06 3 views
0

Я пытаюсь написать сценарий для копирования записей из одной ячейки листа в другую с шаблоном. У меня возникают проблемы с объединенными ячейками для вставки неизолированных ячеек. У меня есть следующий код, я знаю, что могу использовать специальные функции Paste, но могу ли я использовать более одного за раз? Будет ли вставить: = xlColumnWidth help?VBA paste special

Sheets("Sheet3").Select 
    Range("N6:O6").Select 
    Selection.Copy 
    Sheets("Reports").Select 
    Range("O4").Select 
    Selection.PasteSpecial Paste:=xlPasteValues 
+0

привет Трэвис делает эту работу за вас? Рабочие листы («Отчеты»). Диапазон («O4») = Рабочие листы («Лист3»). Диапазон («N6»). MergeArea.Cells (1, 1) .Value – jamesC

+0

* У меня возникают проблемы * --- какие конкретные "вопросы"? –

+0

Хорошая практика, чтобы попытаться избежать «Выбрать», чтобы избежать «Копировать», используя буфер обмена. Работает ли комментарий @James? – whytheq

ответ

0

Guess Я просто поставить это как ответ

Worksheets("Reports").Range("O4") = Worksheets("Sheet3").Range("N6").MergeArea.Cells(1, 1).Value 
+0

Это, похоже, сработало, спасибо вам большое! –

0

Я согласен с Дэвидом об уходе Выбор но записи макросов производится следующее:

Sub Macro2() 
    Sheets("Sheet3").Select 
    Range("N6:O6").Select 
    Selection.Copy 
    Sheets("Reports").Select 
    Range("O4").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End Sub 

Который, кажется, работает с N6: О6 объединяемых ..

0

Для тривиальное количество данных, подобных этому, не нужно делать что-то подобное, но хорошо знать, что select не нужно много в excel-vba, а также что е буфера обмена можно избежать:

Sub Macro2() 

Dim vArr As Variant 
vArr = Sheets("Reports").Range("N6:O6") 

Dim Destination As Range 
Set Destination = Sheets("Sheet3").Range("O4") 
Destination.Resize(UBound(vArr, 1), UBound(vArr, 2)).Value = vArr 

End Sub