这里有初学者问题。这是我一直在研究的代码
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方法吗?答案 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")
....
如果你有很多专栏,这应该是更好的代码