如何使用vba在Excel工作表中复制动态范围

时间:2017-05-29 12:22:11

标签: excel vba excel-vba

我正在尝试使宏中的范围是动态的而不指定1000行中的最后一行x.Sheets("SheetName").Range("A2:K1000").Copy我想将其更改为动态,因为有时候我会少于或多于此。

3 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:1)

这样的事情可以胜任:

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

答案 2 :(得分:0)

通常,查找包含自下而上值的最后一行。

with x.Sheets("SheetName")
    .Range(.cells(2, "A"), .cells(.rows.count, "K").end(xlup)).Copy
    'paste it somewhere
end with