You don't Select
a sheet you Activate
it. But actually you shouldn't do either in most cases.
You can shorten your code to:
Sub sub1()
Dim i As Long
For i = 1 To 3
With Sheets(i)
.Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Copy
End With
Sheets(6).Cells(1, i).PasteSpecial xlPasteValues
Next i
End Sub
Note that I also declared i
. I recommend declaring all variables, and using Option Explicit to make sure you're using the variable you think you are in all cases.
EDIT: Simoco's edit is good: Here's what I came up with:
Sub sub1()
Dim i As Long
Dim wb As Excel.Workbook
Set wb = ActiveWorkbook
For i = 1 To 3
With wb.Sheets(i)
.Range("A1:A" & .Range("A1").End(xlDown).Row).Copy
wb.Sheets(6).Cells(1, i).PasteSpecial xlPasteValues
End With
Next i
End Sub
Note that I declared a Workbook variable and qualified to it. One more good practice for you!