4

我正在尝试选择电子表格的前 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

也不行。在此先感谢您的帮助!

4

3 回答 3

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
于 2012-11-21T16:07:48.903 回答
2

尝试这个

Sub marine()

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

End Sub

用您的工作表名称替换 activesheet。activesheets 不是最好的

于 2012-11-21T22:22:59.260 回答
1

刚发现这个:

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

甜的!

我也会尝试:

rows("1:7").cut rows("32")
于 2016-12-05T15:22:24.483 回答