我一直在做大量的浏览以获得答案,但是在编写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 :(得分: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
我希望这会有所帮助。
干杯克里斯