希望循环播放我录制的宏,跳过行并根据条件结束

希望循环播放我录制的宏,跳过行并根据条件结束

抱歉,我问的问题不太清楚,但我整个上午都在研究宏,希望它能帮我完成一项任务,但通过谷歌搜索,我并没有找到我需要的答案。我使用的是 Windows 10 和 Excel 2016。这是我录制的宏:

Sub biweekly()
'
' biweekly Macro
'
' Keyboard Shortcut: Ctrl+w
'
    Rows("53:53").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A52:C52").Select
    Selection.Cut Destination:=Range("A53:C53")
    Range("M52").Select
    Selection.Cut Destination:=Range("M53")
    Range("D53").Select
    ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C"
    Range("D53").Select
    Selection.Copy
    Range("E53:L53").Select
    ActiveSheet.Paste
    Range("D53:L53").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("51:52").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Range("A54").Select
End Sub

本质上,我将每周行合并为双周行。我以前使用数据透视表和 getpivotdata 做过这个,但这次我希望有一个更优雅的解决方案。我希望宏在完成后循环,向下移动 3 行以处理接下来的两周(因此,在这个例子中,如果我在删除单个每周行后创建的新行现在是第 51 行,我希望向下移动到第 54 行并在其上方插入一个新行以开始处理第 52 和第 53 周行对)。

我不知道如何循环宏,以便它在每个循环中跳转到下一行。我还想让宏有条件地停止运行,比如当 A 列中的值发生变化时(我有一个按字母顺序排列的大型工作表,其中包含两年的双周工资数据,我希望宏在每个名称的末尾停止,以便我可以调整工资期连接并为新名称再次运行它)。或者,知道如何让它运行一定次数(比如 30 次)也是一个不错的选择。

任何有关这些问题的帮助都将不胜感激。再次抱歉,我对宏和 VBE 不熟悉。

答案1

有关循环的一些帮助请访问如何使用 VBA 代码循环重复任务。最简单的循环是For i = 1 to 30在开始和Next i结束处。

对于其他问题,请尝试抵消财产:

  • 要选择当前单元格下方三行的单元格,
    Selection.Offset(3, 0).Select

  • 如果单元格与上面三行的单元格不同,则停止宏,
    If Selection.Value <> Selection.Offset(-3, 0).Value Then Exit Sub

录制宏是一个很好的开始。当您更熟悉 VBA 代码时,您可能会合并以 结尾.Select和以 开头的行Selection.

相关内容