如何使用vba复制Excel Sheet中的dynamic范围

我试图使macros在没有指定最后一行x.Sheets("SheetName").Range("A2:K1000").Copy的macros是dynamic的x.Sheets("SheetName").Range("A2:K1000").Copy 1000行我想改变它为dynamic,因为有时我有less于或多于此。

尝试这个:

 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