我想创建一个excel宏,它允许我复制某些列的x行。例如,我有10.5行中的K列。我想每次复制1000行,最后还要复制500行。任何有关编码部分的帮助?我查看了很多网站但没有成功。我不需要将复制的号码粘贴到任何其他Excel工作表中。我只需要宏命令每次从我选择的列复制1000行。 非常感谢youuuuu非常感谢! 干杯
答案 0 :(得分:1)
当最后一组数据被复制到剪贴板时,会显示一个消息框。
Option Explicit
Sub progressiveCopy()
Dim m As Long
Static i As Long, k As Long
Application.CutCopyMode = False
m = 1000
If k <> ActiveCell.Column Then
k = ActiveCell.Column
i = 0
End If
With Worksheets("sheet1")
m = Application.Min(m, .Cells(.Rows.Count, k).End(xlUp).Row - i)
.Cells(i + 1, k).Resize(m, 1).Copy
i = i + m
If i >= .Cells(.Rows.Count, k).End(xlUp).Row Then
MsgBox "This column is complete. Select another column next time."
End If
End With
End Sub
您可能希望在“宏”对话框中为子过程设置热键组合,以简化重复操作。
答案 1 :(得分:0)
此代码查找当前所选列中的行数。检查要复制的数字是否小于剩余的行数。选择范围并将范围置于复印模式。复制范围后,您必须转到它们的工作表,文档或其他任何粘贴数据。
我已经修改了代码,然后选择了1000行或列中剩下的内容。因此,您应该能够运行代码,粘贴数据,运行代码,粘贴数据。当您到达结尾时,会显示一条消息,告知您位于列的末尾。
Application.CutCopyMode = False
numRowstoCopy = 1000
varCurrentRow = ActiveCell.Row
varCurrentColumn = ActiveCell.Column
FinalRow = Cells(Rows.Count, varCurrentColumn).End(xlUp).Row
varRowsToEnd = FinalRow - varCurrentRow
If varRowsToEnd < numRowstoCopy Then
Range(Cells(varCurrentRow, varCurrentColumn), Cells(varCurrentRow + varRowsToEnd, varCurrentColumn)).Select
Selection.Copy
MsgBox "Last Rows to Paste Have been copied"
Else
Range(Cells(varCurrentRow, varCurrentColumn), Cells(varCurrentRow + numRowstoCopy - 1, varCurrentColumn)).Select
Selection.Copy
ActiveCell.Offset(numRowstoCopy, 0).Select
End If