2015-02-06 162 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