繁体   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