[英]How to copy dynamic range in Excel Sheet using vba
我試圖在宏中使 rang 是動態的,而不指定最后一行x.Sheets("SheetName").Range("A2:K1000").Copy
在 1000 行中x.Sheets("SheetName").Range("A2:K1000").Copy
我想將其更改為動態,因為有時我有少於或多於那個。
嘗試這個:
Sub Test()
Dim lRow as Long
Dim sht as Worksheet
Set sht = x.Sheets("SheetName")
lRow = sht.Cells(sht.Rows.Count, 2).End(xlUp).Row
sht.Range("A2:K" & lRow).Copy
End Sub
像這樣的事情將完成這項工作:
Option Explicit
Public Sub TestMe()
Dim lngLastRow As Long
lngLastRow = 150
'or come up with a function from here
'https://www.rondebruin.nl/win/s9/win005.htm
With x.Worksheets("SheetName")
.Range(.Cells(2, 1), .Cells(lngLastRow, 1)).Copy
End With
End Sub
通常,給定列中的最后一行或給定行中的最后一列是您將在 VBA 中花費大量時間的事情。 因此,閱讀以下內容是個好主意: https : //www.rondebruin.nl/win/s9/win005.htm
通常,自下而上查找包含值的最后一行。
with x.Sheets("SheetName")
.Range(.cells(2, "A"), .cells(.rows.count, "K").end(xlup)).Copy
'paste it somewhere
end with
有沒有一種方法可以不使用復制粘貼? 例如“設置rng = .Range(.Cells(2,1),.Cells(lngLastRow,1))”,然后使目標范圍的第一個單元格等於此變量-例如“ rng2 = rng”? 我需要在同一個工作簿中以及在單獨的工作簿中的多個其他工作表上執行大量這些操作,然后需要將這些范圍放入主工作表中。
我正在嘗試將使用此配置的復制粘貼功能轉換為我在上面描述的功能,但似乎無法正常工作。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.