[英]Copy between sheets and paste last row will overwrite values if column A (or B; C etc.) is empty
我想使用宏將單元格范圍從 sheet1 復制並粘貼到 sheet2 到最后一行。 問題是,如果在 sheet2 列 A(或 B;C)為空,則最后一個操作(粘貼)將覆蓋目標(sheet2)中的最后一行
就是不能正確。
Private Sub vaart_md_sis_Click()
Dim SourceWS As Worksheet, DestWS As Worksheet
Dim SourceRng As Range, DestCell As Range
Dim lloop As Long
Set SourceWS = Sheets("md")
Set DestWS = Sheets("y_koond")
Application.ScreenUpdating = 0
With SourceWS
Set DestCell = DestWS.Range("a" & Rows.Count).End(xlUp).Offset(1)
For lloop = 1 To 7
Set SourceRng = Choose(lloop, .Range("A3"), _
.Range("B3"), .Range("C3"), .Range("F3"), .Range("G3"), .Range("H3"), .Range("I3"))
SourceRng.Copy
DestCell.Offset(, lloop - 1).PasteSpecial xlPasteValues
Next lloop
End With
With Application
.CutCopyMode = 0
.ScreenUpdating = 1
End With
End Sub
這應該有效。 只需將最后一行基於要復制的列,我認為這就是您正在做的事情。 我假設列的長度不同,否則你根本不需要循環。
您也可以使用Offset
而不是Choose
- 會稍微縮短代碼。
Private Sub vaart_md_sis_Click()
Dim SourceWS As Worksheet, DestWS As Worksheet
Dim SourceRng As Range, DestCell As Range
Dim lloop As Long
Set SourceWS = Sheets("md")
Set DestWS = Sheets("y_koond")
Application.ScreenUpdating = 0
With SourceWS
For lloop = 1 To 7
Set SourceRng = Choose(lloop, .Range("A3"), _
.Range("B3"), .Range("C3"), .Range("F3"), .Range("G3"), .Range("H3"), .Range("I3"))
Set DestCell = DestWS.Cells(Rows.Count, lloop).End(xlUp).Offset(1)
SourceRng.Copy
DestCell.PasteSpecial xlPasteValues
'better to avoid copy/paste: destcell.value=sourcerng.value
Next lloop
End With
With Application
.CutCopyMode = 0
.ScreenUpdating = 1
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.