2013-07-16 42 views
0

我想格式化一個大的報告,並想使用宏。例如,我可能需要在每隔一列插入一個新列,然後對其進行遮蔽並插入一些數據。對於將新列的一部分,而不是:Noob - 自動化VBA剪切和粘貼,循環?

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Columns("A:A").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    Columns("C:C").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    Columns("E:E").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    .....repeated 1000 times :-(
End Sub 

我想有更多的東西一樣:

' Do this for columns A - ZZ 
Columns("A:A").Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Columns(move over 2 columns).Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
'Run until Columns(":") > "ZZ:ZZ" 
End Sub 

我熟悉的其他語言OOP,希望有人能提供一些線索循環這些卑鄙的任務!

回答

1
Dim rng As Range, x As Long 

Set rng = ActiveSheet.Range("A1:J1") 
For x = rng.Cells.Count To 1 Step -1 
    rng(x).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Next x 
+0

所以 > DIM爲聲明變量RNG並且x,RNG作爲值和x作爲NUM /整數的範圍/浮動 > RNG被分配值範圍a1至J1 – user2359452

+0

我不分配範圍的值爲'rng',但是範圍本身:只要'Set'在VBA中使用,那麼它就是一個正在分配的對象。這個'arr = Range(「A1:J1」)' - 或者更明確地說'arr = Range(「A1:J1」)。Value' - 將賦值該範圍內的*值*(然後「arr」將會是一個2-d陣列) –

+0

所以 1. DIM爲聲明變量RNG並且x,RNG作爲值和x作爲NUM /整數的範圍/浮動 2. RNG被分配值範圍a1至J1 3.(循環?)for循環開始通過範圍x,遞增1,但後退(向上)? 4.在選中的單元格上執行格式化,然後增加下一個x的數量? – user2359452