2017-08-06 47 views
1

我想要拿出一個宏來拖拽列。我剛剛錄製了一個拖動列的宏。有沒有一種方法可以把一個循環拉下來我所有的列?如何循環遍歷VBA中的各個列

我想出了一些這個,但它不工作。該代碼僅在拖拽第一列後停止工作。

Sub Macro3() 
    ' 
    ' Macro3 Macro 
    ' 
    For i = 1 To 100 

     Selection.AutoFill Destination:=ActiveCell.Range("A1:A4") 
     ActiveCell.Range("A1:A4").Select 
    Next i 
End Sub 

我該如何讓它在所有100列上工作?感謝任何幫助,因爲我正在嘗試學習這一點。

+0

好吧,所以你想通過列CV(100列或無論你在第1行填充多少)「拖拽」列A。什麼決定了你將他們拖到了多遠?它總是行1:4嗎? – Jeeped

+0

是的,它通常是一個固定的數字。雖然並不總是4。 –

回答

2

將.AutoFill切換爲.FillDown並一次完成。

dim rws as long 
rws = 4 
with worksheets("sheet1") 
    with .range(.cells(1, "A"), .cells(1, .columns.count).end(xltoleft)) 
     .resize(rws ,.columns.count).filldown 
    end with 
end with 

將rws設置爲總行數或找出確定總行數的其他方法。

+0

謝謝我真的很感謝你的幫助。你能告訴我我的代碼中哪裏出了問題,以及如何使它工作。我的印象是,我可以記錄一個宏,做一些事情,並把一個For循環。我走錯了方向? –

+0

您對相同的A1:A4單元執行相同的.AutoFill操作100次。我考慮使用ActiveCell.Offset(0,1)。選擇'壞習慣',所以我沒有糾正你的代碼。請參見[如何避免在Excel VBA宏中使用選擇](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。沒有意義在糾正什麼恕我直言是錯誤的做事方式。 – Jeeped

+0

謝謝。我想我現在需要做一些閱讀。如果我想拖下其他所有列,如何修改此代碼? –