VBA Range.Copy转置粘贴1004错误

时间:2018-11-10 04:16:12

标签: excel vba

我编写了这段代码,但是仅在sheet1处于活动状态时才有效。如果sheet2是活动的,并且我运行代码,则出现1004错误。我不知道为什么预先谢谢你!

Public Sub trans()

    Worksheets("Sheet1").Range(Cells(1, 1), Cells(3, 2)).Copy
    Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True

End Sub

2 个答案:

答案 0 :(得分:0)

在您可以从其他工作表中选择一个范围之前,该工作表需要处于活动状态。例如。像这样的东西:

Public Sub trans()
  Range(Worksheets("Sheet1").Cells(1, 1), Worksheets("Sheet1").Cells(3, 2)).Copy
  Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True
End Sub

答案 1 :(得分:0)

使用Range(“地址”)表示法,使Worksheets(“ Sheet1”)引用就足够了:

Public Sub trans()

    Worksheets("Sheet1").Range("A1:B2").Copy
    Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True

End Sub

或在With ... End With块中引用Worksheets(“ Sheet1”)以使Cells()引用它:

Public Sub trans()

    With Worksheets("Sheet1")
        .Range(.Cells(1,1), .Cells(3,2)).Copy
    End With  
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True

End Sub