复制多个列并以不同的顺序粘贴到另一个工作簿

时间:2014-10-29 14:33:16

标签: vba excel-vba excel

这里有初学者问题。这是我一直在研究的代码

Private Sub Copy()

    Dim wb1 As Workbook
    Dim wb2 As Workbook

    Set wb1 = ThisWorkbook
(wb2 defined somewhere here)
With wb1.Sheets(1)
.Columns("A").Copy Destination = wb2.Sheets(2).Range("A1")
.Columns("B").Copy Destination = wb2.Sheets(2).Range("C1")
.Columns("C").Copy Destination = wb2.Sheets(2).Range("R1")
....

End With

End Sub

我想知道是否有更短的写作方式?感谢。

编辑:看来这段代码不起作用。是因为我不能在两个不同的工作簿之间使用Copy方法吗?

1 个答案:

答案 0 :(得分:1)

你可以创建一个函数/ sub,这样你就不必为每一行复制整行,你也应该将wb2.Sheets(2).Range("A1")更改为wb2.Sheets(2).Columns("A")

函数/ sub看起来像这样:

sub CopyColumn (Og_col as String, New_col as string)
    Dim wb1 As Workbook
    Dim wb2 As Workbook

    Set wb1 = ThisWorkbook
    'set wb2 = some other workbook

    wb1.Sheets(1).Columns(Og_col).Copy Destination = wb2.Sheets(2).Columns(New_col)

End Sub

然后在原始代码中更改:

.Columns("A").Copy Destination = wb2.Sheets(2).Range("A1")
.Columns("B").Copy Destination = wb2.Sheets(2).Range("C1")
.Columns("C").Copy Destination = wb2.Sheets(2).Range("R1")
....

要:

Call CopyColumn("A", "A")
Call CopyColumn("B", "C")
Call CopyColumn("C", "R")
....

如果你有很多专栏,这应该是更好的代码