簡體   English   中英

將動態范圍從一個工作表復制並粘貼到另一個工作表

[英]Copy and Paste Dynamic Range from One Worksheet to Another

我試圖從“Sheet1”的第2行開始復制A列,然后將其粘貼到從第5行開始的工作表“ABC”上的C列.A列中的行數是可變的,因此我不能使用固定范圍。

下面的代碼完成了我的需要,但我試圖避免使用.Select和.Activate

LastRow = Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("A2:A" & LastRow).Copy
Sheets("ABC").Activate
Sheets("ABC").Range("C5:C" & LastRow).Select
Selection.PasteSpecial xlPasteValues

我嘗試使用以下代碼將列設置為彼此:

  Sheets("ABC").Range("C5").End(xlDown).Value=Sheets("Sheet1").Range("A2:A" & LastRow).Value

這運行沒有錯誤但它“什么都不做” - 工作表“ABC”上沒有數據出現

我也嘗試過:

    Dim WS As Worksheet
    Dim wsABC As worksheet


    Set WS = Sheets("Sheet1")
    Set wsABC = Sheets("ABC")
    LastRow = Range("A" & Rows.Count).End(xlUp).Row

    WS.Range("A2:A" & LastRow).Copy
    wsABC.Range("C5").End(xlDown).Paste

這會產生“運行時錯誤#438對象不支持此屬性或方法”此行上的錯誤:

 wsABC.Range("C5").End(xlDown).Paste

我嘗試的另一種方法如下:

Dim WS As Worksheet

    Set WS = Sheets("Sheet1")
    Set wsABC = Sheets("ABC")


  With WS
  LastRow = Range("A" & Rows.Count).End(xlUp).Row
  WS.Range("A2:A" & LastRow).value = wsABC.Range("C5:C & LastRow").Value

End With

這會產生“運行時錯誤'1004'應用程序定義或對象定義錯誤。

我願意對我的任何嘗試進行更正/評論,我只是想避免使用.Select和.Activate。

提前感謝您的時間和幫助!

編碼風格可能差異很大。 這是一種做你想要的方法:

Sub tgr()

    Dim wb As Workbook
    Dim wsData As Worksheet
    Dim wsDest As Worksheet

    Set wb = ActiveWorkbook
    Set wsData = wb.Sheets("Sheet1")
    Set wsDest = wb.Sheets("ABC")

    With wsData.Range("A2", wsData.Cells(wsData.Rows.Count, "A").End(xlUp))
        wsDest.Range("C5").Resize(.Rows.Count).Value = .Value
    End With

End Sub
With Worksheets("Sheet 1")
    With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
        Worksheets("ABC").Range("C5").Resize(.Rows.Count).Value = .Value
    End With
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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