2015-02-06 154 views
0

我想寫一個腳本來將條目從一個工作表單元複製到另一個模板。我有問題設置合併單元格粘貼在未合併的單元格中。我有以下代碼,我知道我可以使用特殊粘貼功能,但是我可以一次使用多個粘貼功能嗎?將粘貼:= xlColumnWidth幫助?VBA粘貼特殊

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

喜特拉維斯這是否對你的工作?工作表(「Reports」)。範圍(「O4」)=工作表(「Sheet3」)。範圍(「N6」)。MergeArea.Cells(1,1)。值 – jamesC 2015-02-06 22:22:45

+0

*我遇到問題* 「問題」? – 2015-02-06 22:23:40

+0

好的做法是儘量避免'Select'也嘗試使用剪貼板來避免使用'Copy'。 @詹姆斯評論工作嗎? – whytheq 2015-02-06 23:16:27

回答

0

猜我只是把這個作爲一個答案

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

這似乎已經奏效,非常感謝! – 2015-02-10 13:06:24

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的工作:O6被合併..

0

對於像這樣的微不足道的數據不需要做這樣的事情,但是需要注意的是selectexcel-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