2012-11-27 31 views
1

我對VBA完全陌生。我有一個電子表格,需要將數據與日期對齊。日期在工作表更新時動態變化。宏根據特定單元格的值重複粘貼到左側

基本上,下面的宏將數據向左移動一列(用列K中的數據替換列J到Q),並清除Q中現有的數據。數據是正值,公式和格式的組合。下面的宏可以工作,但是我需要它重複它自己在單元格E3中的值的次數(這個單元格會考慮時間滯後來重新排列數據)。

所以基本上可以有人請幫助這個基於E3中的值重複這個宏,如果它大於1.另外我得到一個錯誤清除單元格後重復一次,因爲單元格已經清除,所以也許運行第一部分,然後加入IF ("E3") > 1,然後在E3中移動Range("K6:P500")次數。我試圖做到這一點,但我不知道如何重複,如果我放在一起沒有真正的工作。

再次感謝您的建議!

' Week_update Macro 
' 
' Keyboard Shortcut: Ctrl+Shift+W 
' 
    Range("K6:Q500").Select 
    Selection.Copy 
    Range("J6").Select 
    ActiveSheet.PasteSpecial Format:=2, Link:=1, DisplayAsIcon:=False, _ 
     IconFileName:=False 
    Range("Q6").Select 
    Range("Q6:Q500").Select 
    Selection.SpecialCells(xlCellTypeConstants, 1).Select 
Selection.ClearContents 
End Sub 
+0

你的意思是,如果E3的編號爲3的例子,你會希望一切從範圍內移動(「K6:Q500」)爲區域(「H6:N500」 )並清除範圍內的所有內容(「O6:Q500」)? – mattboy

+0

如果E3等於3,我希望當前M列中的要現在在J列中,而之前在J-L中的內容將被刪除。留下3空(保持格式和任何公式,因此粘貼特殊)列以手動填充數據。 – ACJ

回答

0

假設你的意思是將E3行中包含的整個列移動到右邊,這將做你想要的。

如果使用Cells表示法而不是A1:B1,則使用移動範圍更容易。

Sub Week_update() 
Dim i As Long 
    i = Range("E6") 
    If i > 0 Then 
     ' Copy range 
     Range(Cells(6, 10 + i), Cells(500, 18)).Copy 
     ' Select range the same size but i columns to the right 
     Range(Cells(6, 10), Cells(500, 18 - i)).Select 
     ' Paste special 
     ActiveSheet.PasteSpecial Format:=2, Link:=1, _ 
      DisplayAsIcon:=False, IconFileName:=False 
     ' Clear i columns on the right 
     Range(Cells(6, 18 - i), Cells(500, 18)).ClearContents 
    End If 
End Sub 

這是如果你真的需要PasteSpecial。如果沒有,那麼你可以使用:

Sub Week_update() 
Dim i As Long 
    i = Range("E6") 
    If i > 0 Then 
     ' Copy range i columns to the left 
     Range(Cells(6, 11), Cells(500, 17)).Copy(_ 
      Range(Cells(6, 11 - i), Cells(500, 17 - i))) 
     ' Clear i columns on the right 
     Range(Cells(6, 17 - i), Cells(500, 17)).ClearContents 
    End If 
End Sub 
+0

謝謝。它不完全正常工作...我試圖修改它,但我似乎無法得到它的工作。 – ACJ

+0

你能描述一下它究竟做錯了什麼嗎? –

+0

對不起,我的最後一條消息沒有顯示。我修改了你的幫助,我現在只是測試它,但它似乎工作。 – ACJ

相關問題