将一个工作表中的列中的一系列单元格复制到另一个工作表中的一行中的指定单元格

时间:2017-05-30 17:14:58

标签: excel vba excel-vba

我一直在做大量的浏览以获得答案,但是在编写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?

1 个答案:

答案 0 :(得分:0)

您尝试做的事情似乎并不适合多项选择。不幸的是,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

我希望这会有所帮助。

干杯克里斯