0
剪貼板
我成功地從一個範圍值複製下面的代碼:複製並粘貼多個範圍,而不使用使用VBA
Dim wb As Workbook, strFile As String, rSrc As Range, rDst As Range, r1 As Range, r2 As Range, r3 As Range, r As Range
Set wb = ActiveWorkbook
'pasting Summary values
Set wkbTemp = Workbooks.Open(ThisWorkbook.Path & "\data\Summary.csv")
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Set rSrc = wkbTemp.Sheets(1).Range("b2:G" & LastRow)
wb.Activate
Set rDst = wb.Sheets("Summary").Cells(6, 4).Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc.Value
我也想多範圍從同一工作表複製,但它崩潰當我設置源的範圍用以下代碼:
'PY to Comparison
With wkbTemp.Sheets(1)
Set r1 = .Range("B2:B" & LastRow)
Set r2 = .Range("d2:d" & LastRow)
Set r3 = .Range("f2:g" & LastRow)
Set r = Union(r1, r2, r3)
Set rSrc = .Range(r)
End With
wb.Activate
Set rDst = wb.Sheets("Comparison").Cells(9, 6).Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc.Value
上述的方法來複制多個範圍得到了它從下面的鏈接Copy multiple ranges with VBA
我也試圖複製使用行(但我真正需要的是動態的長度)的預定長度的範圍,但我的代碼只複製第一個範圍:
Set rSrc = wkbTemp.Sheets(1).Range("B2:B6,d2:d6,f2,g6")
wb.Activate
Set rDst = wb.Sheets("Comparison").Cells(9, 6).Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc.Value
我在做什麼錯?
'rSrc'將包含3'Areas'。 AFAIK,如果你沒有指定使用哪一個,默認情況下將使用'rSrc.Areas(1).Value'。 – YowE3K
你只是不能這樣做 - 你需要使用循環。 –
蒂姆是對的。遍歷Areas集合 - 每個Area都是連續的範圍 –