将一个表格中一列中的单元格范围复制到另一个表格中的某一行中的指定单元格

问题描述:

我一直在做很多冲浪寻找答案,但当我需要编写VB代码时,我很绿具体帮助如何编写我的案例中的代码。我的副本&粘贴冒险没有任何工作,所以我希望你会耐心等待我。将一个表格中一列中的单元格范围复制到另一个表格中的某一行中的指定单元格

当前的代码我是这样的:

Sub CopyPaste() 

Dim targetRng As Excel.Range 
Dim destRng As Excel.Range 
Set targetRng = Range("K6:K14,K19:K20") 

With Excel.ThisWorkbook.Sheets("Database") 
    Set destRng = .Cells(2, .Columns.Count).End(Excel.xlToLeft).Offset(0, 1).Resize(targetRng.Rows.Count, targetRng.Columns.Count) 
    destRng.Value = targetRng.Value 
End With 

With Excel.ThisWorkbook.Sheets("Email") 
Range("J6:J14,J19:J20").ClearContents 
End With 

End Sub 

...效果很好,但我想在一排后的数据,而不是在一列。 (注意,复制的目标范围是K列,并且要清除的范围是J - 因为J列有下拉列表可供选择)

所以我怀疑我需要的代码位补充说明的是:

.PasteSpecial Paste:=xlPasteValues, Transpose:=True 

但我不能为我的生活弄清楚如何或在哪里得到,在那里,我让所有的错误都做我的头

。另外,我要复制的数据是一个有间隙的范围(K6:K14,K19:K20) - 但第二个范围(K19:K20)不会粘贴到“数据库”表中。 .ClearContents函数适用于J列范围内的两个集合,所以我没有看到我在哪里出错。

可怜的代码noob?

+0

因此,您正在复制数据“K6:K14”,并希望将该信息粘贴到*行中?你将需要使用'.Copy' /'.PasteSpecial'。目前,您将范围值设置为相等,这是一种仅复制数据的有效方式,所以您可以很赞!但是,将'destRng.Value'行替换为'targetRng.Copy',然后下一行'destRng.PasteSpecial Paste:= xlPasteValues,Transpose:= True'。 *可能会抛出一个错误,因为你在'targetRng'中有两个范围,但是可能不会......不能回想起我的头顶。 – BruceWayne

你要做的似乎不适用于多个选择。不幸的是,VBA中的调试信息并不是最好的,所以我倾向于使用一些错误处理来提供更多的信息。

Sub Test() 

On Error GoTo err_handler 

    Dim copyRange As Excel.Range 
    Set copyRange = Sheets("Sheet1").Range("A1:A10,A13:A14") 
    Dim pasteRange As Excel.Range 
    Set pasteRange = Sheets("Sheet1").Range("C1:L1,O1:P1") 

    copyRange.Copy 
    pasteRange.PasteSpecial Paste:=xlPasteValues, Transpose:=True 

    Exit Sub 

err_handler: 
    MsgBox (Err.Description) 

End Sub 

当运行这些代码和错误抓到我看到下面的消息

如果我分裂范围从像这个动作不会在多项选择

工作然后按预期工作。

Sub Test() 

On Error GoTo err_handler 

    Dim copyRange As Excel.Range 
    Set copyRange = Sheets("Sheet1").Range("A1:A10") 
    Dim pasteRange As Excel.Range 
    Set pasteRange = Sheets("Sheet1").Range("C1:L1") 

    copyRange.Copy 
    pasteRange.PasteSpecial Paste:=xlPasteValues, Transpose:=True 

    Set copyRange = Sheets("Sheet1").Range("A13:A14") 
    Set pasteRange = Sheets("Sheet1").Range("O1:P1") 

    copyRange.Copy 
    pasteRange.PasteSpecial Paste:=xlPasteValues, Transpose:=True 

    Exit Sub 

err_handler: 
    MsgBox (Err.Description) 

End Sub 

我希望这有助于。

Cheers Chris