Excel - For Loop


Sub Macro11()
'
' Macro11 Macro
'
'
Calculate
Range("B46:CRZ46").Select
Selection.Copy
Sheets("Sheet1").Select
Range("B:B").Select
Cells(Range("B:B").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub

以下宏的作用是刷新页面(创建一个新数据集(,从("B46:CRZ46")复制数据集并将其粘贴到"Sheet1"中。 现在,我希望粘贴每次都向下行(我尝试过.End(xlUp)但是我没有正确使用它,它只是复制并粘贴在同一行上。

我可以更改或添加什么以使代码正常运行?

您可以直接分配值,而无需复制/粘贴:

Dim rng As Range
Calculate
Set rng = Activesheet.Range("B46:CRZ46")
Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp) _
.Offset(1, 0).Resize(rng.rows.count, rng.columns.count).Value = rng.Value

只需替换以下行:

Cells(Range("B:B").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

跟:

Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues

解释:
Range("B:B").End(xlUp)将带您到达顶峰。相反,这里的方法应该是按Range("B" & Rows.Count)转到底部,然后End(xlUp).Offset(1, 0)转到底部第一个非空白单元格下方的 1 行。

最新更新