簡體   English   中英

從 Sheet1 復制使用的范圍並粘貼到 Sheet3

[英]Copy Used Range from Sheet1 and paste into Sheet3

我一直在嘗試制作一個代碼,將UsedRangeSheet1復制並將該范圍粘貼到Sheet3中。

每次運行代碼時, UsedRange都會從第一個空行粘貼到Sheet3中。

例如: Sheet1有 5 行(第 1 行將始終為標題),其中包含我將按下運行的數據,代碼會將數據復制並粘貼到Sheet3第 2 Row2 (第 1 行將始終為標題)。

所以現在Sheet3有數據,直到Row5我將再次按下運行按鈕,然后數據將從Row6粘貼。

每次按下按鈕時,數據將相應地粘貼。 我在網上獲得了一個代碼並嘗試對其進行編輯,但它沒有按我的意願工作。

對你的幫助表示感謝。

代碼。

Sub usedrange()

    Dim ws1         As Worksheet
    Dim ws2         As Worksheet
    Dim source      As Range
    Dim target      As Range
    Dim lastColumn  As Long

    Set ws1 = Worksheets("NewSheet")
    Set ws2 = Sheet3

    With ws2
        lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
        If WorksheetFunction.CountA(.Rows(1)) > 0 Then
            lastrow = lastrow + 1
        End If
    End With

    Set source = ws1.usedrange.Offset(1)
    Set target = ws2.Cells(, lastrow)

    source.Copy Destination:=target
    Application.CutCopyMode = False

End Sub

復制使用范圍

Option Explicit

Sub copyUsedRange()

    Dim ws1         As Worksheet
    Dim ws2         As Worksheet
    Dim Source      As Range
    Dim Target      As Range
    Dim LastRow     As Long
    
    ' Code names
    Set ws1 = Sheet1
    Set ws2 = Sheet3
    ' Tab Names
    'Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    'Set ws2 = ThisWorkbook.Worksheets("Sheet3")
    
    With ws1.UsedRange
        Set Source = .Resize(.Rows.Count - 1).Offset(1)
    End With
    
    With ws2
        Set Target = .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
    End With
 
    Source.Copy Target

End Sub

代碼是不言自明的

Public Sub CopyUsedRange()

    Dim sourceSheet As Worksheet
    Set sourceSheet = ThisWorkbook.Worksheets("sourceSheetName")
    
    Dim targetSheet As Worksheet
    Set targetSheet = ThisWorkbook.Worksheets("targetSheetName")

    Dim sourceRange As Range
    Set sourceRange = sourceSheet.UsedRange.Resize(sourceSheet.UsedRange.Rows.Count - 1, sourceSheet.UsedRange.Columns.Count).Offset(1)
    
    Dim targetLastRow As Long
    targetLastRow = targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row
    
    Dim targetRange As Range
    Set targetRange = targetSheet.Range("A" & targetLastRow + 1)
    
    sourceRange.Copy targetRange
    
End Sub
Sub usedrange()

    Dim ws1         As Worksheet
    Dim ws2         As Worksheet
    Dim source      As Range
    Dim target      As Range
    Dim vDB As Variant
    Dim rngDB As Range
    Dim r As Long, c As Long

    Set ws1 = Worksheets("NewSheet")
    Set ws2 = Sheet3
    
    With ws1
        r = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        c = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
        Set rngDB = .Range("a1", .Cells(r, c))
    End With
    Set source = rngDB.Offset(1)
    vDB = source
    Set target = ws2.Range("a" & Rows.Count).End(xlUp)(2)

    target.Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB

End Sub

暫無
暫無

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

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