[英]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
宣布PND
為Variant
-參見上述修訂。
使用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.