2017-05-30 109 views
2

我一直在做很多衝浪尋找答案,但當我需要編寫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

回答

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 

我希望這有助於。

Cheers Chris

相關問題