繁体   English   中英

Excel宏可将范围从一张纸复制到另一张纸

[英]Excel macro to copy range from one sheet to another

我将范围从一张纸复制到另一张纸时遇到了问题。 我试图用下面的代码做到这一点

Sub zaladuj()
    Dim PND, DR As Worksheet
    Set PND = ActiveWorkbook.Sheets("sheet2")
    Set DR = ActiveWorkbook.Sheets("sheet1")
    Dim row As Integer
    Dim copyRng As Range, pasteRng As Range

    row = 4
    Do Until IsEmpty(DR.Cells(row, 2))
        row = row + 1
    Loop
    With DR
         Set copyRng = Range(Cells(3, 1), Cells(row, 5))
    End With

    With PND
        Set pasteRng = Range(Cells(3, 1), Cells(row, 5))
    End With

    copyRnd.Copy pasteRng

End Sub

但是,运行宏后,什么也没有发生。 据我所知,整个函数仅在sheet2中运行。 整个宏放置在sheet2对象中。

With执行任何操作。 您需要在Rangest前面的点将它们与With语句之后的对象绑定在一起。

Option Explicit

Sub zaladuj()
    Dim PND As Worksheet, DR As Worksheet
    Set PND = ActiveWorkbook.Sheets("sheet2")
    Set DR = ActiveWorkbook.Sheets("sheet1")
    Dim row As Long
    Dim copyRng As Range, pasteRng As Range

    row = 4
    Do Until IsEmpty(DR.Cells(row, 2))
        row = row + 1
    Loop
    With DR
         Set copyRng = .Range(.Cells(3, 1), .Cells(row, 5))
    End With

    With PND
        Set pasteRng = .Range(.Cells(3, 1), .Cells(row, 5))
    End With

    copyRng.Copy pasteRng

End Sub

另请注意

Dim PND, DR As Worksheet

宣布PNDVariant -参见上述修订。


使用Long而不是Integer因为Excel具有比Integer可以处理的更多的行。


您可能可以用Do循环替换为

row=DR.Cells(rows.count, 2).end(xlup).row

这是该期待的吗?

编辑代码

Option Explicit

Sub zaladuj()

    Dim PND As Worksheet, DR As Worksheet
    Dim row As Long

    With ThisWorkbook
        Set DR = .Sheets("Sheet1")
        Set PND = .Sheets("Sheet2")
    End With

    row = 4

    Do Until IsEmpty(DR.Cells(row, 2))

        DR.Range(DR.Cells(3, 1), DR.Cells(row, 5)).Copy PND.Range(PND.Cells(3, 1), PND.Cells(row, 5))

        row = row + 1

    Loop

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM