2012-11-21 38 views
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 

不會工作。先謝謝您的幫助!

回答

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 
+0

它增加了一幫行,但不復制。如果你讓我演示如何複製和粘貼一行,我可能會修改它以滿足我的需要。謝謝。 –

+0

降檔後,您可以'ws.Range(「A」&TargetRow + NumRows).PasteSpecial「......我想。 – Bmo

+2

在這種情況下,向下移動也會複製行,就像在Excel界面中「插入剪切單元格」一樣。我假設你正在按照上面的方式運行它。無論如何,我會編輯只做一個剪切和粘貼。僅供參考,如果您不瞭解宏記錄器,這是一個很好的方式來獲得這樣的事情的一些起始代碼。 –

2

試試這個

Sub marine() 

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

End Sub 

與您的工作表名稱替換activesheet。 activesheets是不是最好的

+0

這很有效,除非有需要複製的公式。它也不會複製格式,評論或驗證,只是值。 –

+0

我喜歡你的宏名! –

1

剛剛發現這一點:

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

甜!

我也想嘗試:

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