在vba中向下移动行的范围

Tru*_*ran 4 vba move rows offset

我试图选择我的电子表格的前7行(确切的数字可能会有所不同)并将其向下移动32行(向下移动的行数也可能不同).有人可以帮我代码吗?我试过了:

Worksheets("Report").Cells(x1, 5).EntireRow.Offset(32, 0).Select
Run Code Online (Sandbox Code Playgroud)

我也试过了

for i = 1 to 7
set x1 = worksheets("Report").Cells(i, 5)
Rows(x1).EntireRow.Offset(32, 0).Select
Run Code Online (Sandbox Code Playgroud)

也不会工作.在此先感谢您的帮助!

Dou*_*ncy 10

这就是你要求的,如果在32次之后有任何行将它们向下移动:

Sub MoveRowsDown()
Dim NumRows As Long
Dim TargetRow As Long
Dim ws As Excel.Worksheet

NumRows = 7 'change as necessary
TargetRow = 33 'change as necessary
Set ws = ActiveSheet ' change as necessary

ws.Range("A1").Resize(NumRows).EntireRow.Cut
ws.Range("A" & TargetRow + NumRows).EntireRow.Insert shift:=xlDown
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个只剪切和粘贴的版本,没有花哨的插入:

Sub MoveRowsDown()
Dim NumRows As Long
Dim TargetRow As Long
Dim ws As Excel.Worksheet

NumRows = 7 'change as necessary
TargetRow = 33 'change as necessary
Set ws = ActiveSheet ' change as necessary

ws.Range("A1").Resize(NumRows).EntireRow.Cut Destination:=ws.Range("A" & TargetRow)
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,向下移动也会复制行,就像在Excel界面中的"插入切割单元格"一样.我假设你正如上面那样运行它.无论如何,我会编辑只是做剪切和粘贴.仅供参考,如果你不了解宏记录器,这是获得这样的东西的一些入门代码的好方法. (2认同)