簡體   English   中英

如何使用vba在Excel工作表中復制動態范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM