在vba中向下移动行的范围

时间:2012-11-21 15:51:13

标签: 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

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

3 个答案:

答案 0 :(得分: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

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

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

答案 1 :(得分:2)

试试这个

Sub marine()

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

End Sub

将活动表替换为您的工作表名称。 activesheets不是最好的

答案 2 :(得分:1)

刚刚发现:

range("A1:C6").Cut range("A10")

甜!

我也会尝试:

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