将列从一个表复制到另一个表

这个macros的工作正常,但我知道这是没有效率的,必须有一个更好的方法来做到这一点。 我如何避免必须。select表单?

 Sub ReportFormatter() Columns("BS:BS").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Columns("X:X").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select ActiveSheet.Paste Sheets("Sheet1").Select Columns("Y:Y").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("C1").Select ActiveSheet.Paste Sheets("Sheet1").Select Columns("H:H").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste 

 Sub CopyCols() Sheets("Sheet1").Columns("X:X").Copy Destination:=Sheets("Sheet2").Range("B1") Sheets("Sheet1").Columns("Y:Y").Copy Destination:=Sheets("Sheet2").Range("C1") Sheets("Sheet1").Columns("H:H").Copy Destination:=Sheets("Sheet2").Range("D1") End Sub 
 Sub ReportFormatter() With Sheets("Sheet1") .Columns("BS").Copy Sheets("Sheet2").Range("A1") .Columns("X").Copy Sheets("Sheet2").Range("B1") .Columns("Y").Copy Sheets("Sheet2").Range("C1") .Columns("H").Copy Sheets("Sheet2").Range("D1") End With End Sub 

或简单地说:

 Sub CopyCols() Sheets("Sheet2").Columns("B:B") = Sheets("Sheet1").Columns("X:X") Sheets("Sheet2").Columns("C:C") = Sheets("Sheet1").Columns("Y:Y") Sheets("Sheet2").Columns("D:D") = Sheets("Sheet1").Columns("H:H") End Sub