2017-08-06 2610 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

谢谢。我想我现在需要做一些阅读。如果我想拖下其他所有列,如何修改此代码? –