PasteSpecial Transpose问题

时间:2017-12-07 04:04:03

标签: excel vba excel-vba

我编写了一个宏来根据工作表“ProjList”中的列表创建可变数量的工作表。每张纸都在创建时命名。我试图将一些单元格(列A-D)中的值从“ProjList”复制到新工作表。我已经使用粘贴命令成功完成了它,但我想要转换数据。

我写道:

Sub AddWorkSheets()
    Dim RowNumb As Long
    Dim LastRow As Integer
    LastRow = Worksheets("ProjList").Cells(Worksheets("ProjList").Rows.Count, "D").End(xlUp).Row

    For RowNumb = 2 To LastRow
        Sheets("ProjList").Activate
        Worksheets("ProjList").Range("A" & RowNumb, "D" & RowNumb).Copy
        Sheets.Add
        ActiveSheet.Name = Worksheets("ProjList").Cells(RowNumb, 4).Value
        ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count)
        ActiveSheet.Range("D1").PasteSpecial Paste:=xlPasteValues, transpose:=True
    Next RowNumb
End Sub

我得到了

  

运行时错误1004:范围类的PasteSpecial方法失败。

第一个工作表已创建,但宏在PasteSpecial行失败。

非常感谢任何帮助 谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

ActiveSheet.Range("D1").Resize(, 4).PasteSpecial Paste:=xlPasteValues, transpose:=True

尝试以下代码:

Sub AddWorkSheets()
    Dim RowNumb As Long
    Dim LastRow As Integer
    LastRow = Worksheets("ProjList").Cells(Worksheets("ProjList").Rows.Count, "D").End(xlUp).Row

    For RowNumb = 2 To LastRow
        Sheets("ProjList").Activate
        Sheets.Add
        ActiveSheet.Name = Worksheets("ProjList").Cells(RowNumb, 4).Value
        ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count)
        ActiveSheet.Range("D1").Resize(, 4) = Application.WorksheetFunction.Transpose(Worksheets("ProjList").Range("A" & RowNumb, "D" & RowNumb))
    Next RowNumb
End Sub