如何从第3行开始select整个列 – vba

嘿这里是我的代码,它正在工作,而不是select整个列,我想select第3行后的所有列buter,例如我想select所有的列b,但在B3后,我希望是有道理的。

有任何想法吗?

Sub HorizontalLoop() Dim lCol As Long Sheets("output").Select For lCol = 1 To 100 Dim inputrange As String If Not IsEmpty(Cells(lCol).Value) Then inputrange = Cells(1, lCol).Value Cells(1, lCol).EntireColumn.Select Selection.Copy Sheets("input").Select ActiveSheet.range(inputrange).Select ActiveSheet.Paste Sheets("output").Select End If Next lCol End Sub 

任何帮助将非常感激:)谢谢H

这里是你的代码(与你的答案)一点清理:

 Sub HorizontalLoop() Dim lCol As Long Dim inputrange As String With Sheets("output") For lCol = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column If Not IsEmpty(.Cells(1, lCol).Value) Then inputrange = .Cells(1, lCol).Value .Range(.Cells(3, lCol), .Cells(.Rows.Count, lCol)).Copy Sheets("input").Range(inputrange) End If Next lCol End With End Sub 

尽量避免使用.Select.Activate

当使用两张纸时,最好确保适当的亲子关系。 With Block与其对应. 允许这个。

将A1更改为目标范围

 Sub test() Sheets("input").Range(Cells(3, "B") _ , Cells(Sheets("input").Cells.Rows.Count, "B")).Copy Sheets("output").Range("A1") End Sub 

@ findwindow的权利 – 已被问了很多次。

ThisWorkbook.Worksheets("output").Cells(1, lcol).EntireColumn.Resize(Rows.Count - 3).Offset(3).Select

不需要select表格:

创build一个新的工作表,并select,然后使用此代码:

 ThisWorkbook.Worksheets("output").Cells(1, lcol).EntireColumn.Resize(Rows.Count - 3).Offset(3).Copy _ Destination:=ThisWorkbook.Worksheets("input").Cells(4, 2) 

它将从输出复制到input,而无需select表单 – 只需在代码中引用表单即可。