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

我一直在做很多的冲浪寻找答案,但我很绿,当谈到编写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列有下拉列表可供select)

所以我发现我需要添加的代码是:

 .PasteSpecial Paste:=xlPasteValues, Transpose:=True 

但是我不能为了我的生活而弄清楚如何或在哪里得到那个东西,而且我所得到的所有错误都在我的脑海里。

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

可惜代码noob?

你试图做的似乎没有多个select的工作。 不幸的是,VBA中的debugging信息并不是最好的,所以我倾向于把一些error handling放在一些信息中。

 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 

当这个代码运行,并捕获错误,我看到下面的消息

此操作不适用于多个select

如果我像下面那样分割范围,那么它按预期工作。

 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 

我希望这有帮助。

干杯克里斯