在vba中向下移动行的范围

在vba中向下移动行的范围,vba,rows,move,offset,Vba,Rows,Move,Offset,我正在尝试选择电子表格的前7行(确切数字可能会有所不同),然后向下移动32行(要向下移动的行数也可能有所不同)。有人能帮我查一下密码吗?我试过: Worksheets("Report").Cells(x1, 5).EntireRow.Offset(32, 0).Select 我也试过了 for i = 1 to 7 set x1 = worksheets("Report").Cells(i, 5) Rows(x1).EntireRow.Offset(32, 0).Select 也不行。提前感

我正在尝试选择电子表格的前7行(确切数字可能会有所不同),然后向下移动32行(要向下移动的行数也可能有所不同)。有人能帮我查一下密码吗?我试过:

Worksheets("Report").Cells(x1, 5).EntireRow.Offset(32, 0).Select
我也试过了

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

也不行。提前感谢您的帮助

这会满足您的要求,如果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
编辑:这是一个只需剪切和粘贴的版本,没有插入任何花哨的内容:

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
试试这个

Sub marine()

ActiveSheet.Rows("32:38").Value = ActiveSheet.Rows("1:7").Value
ActiveSheet.Rows("1:7").Clear

End Sub
将activesheet替换为您的工作表名称。activesheets不是最好的

刚刚发现:

range("A1:C6").Cut range("A10")
好极了

我也会尝试:

rows("1:7").cut rows("32")

它添加一组行,但不复制。如果您让我演示如何复制和粘贴一行,我可能可以根据需要修改它。谢谢。降档后,您可以
ws.Range(“A”&TargetRow+NumRows)。粘贴特殊的
…我想。在这种情况下,降档也会复制行,就像在Excel界面中插入剪切单元格一样。我想您运行的正是上面提到的。无论如何,我会编辑,只做剪切和粘贴。仅供参考,如果你不知道宏记录器,这是一个很好的方法来获取类似的启动代码。除非有需要复制的公式,否则这非常有效。它也不会复制格式、注释或验证,只复制值。我喜欢你的宏名称!