将特定范围转换为新工作表PasteSpecial Transpose:= True无效

时间:2018-05-14 07:04:44

标签: excel vba excel-vba

我想将我的工作表的特定范围转置到另一张工作表。因此我有这个代码:

With datasheet
    finalrow = .Cells(.rows.Count, 25).End(xlUp).Row
    Dim unionRng As Range

    For i = 2 To finalrow
        If Cells(i, 25) = duplicate Then '<column 0
            If Not unionRng Is Nothing Then
                Set unionRng = Union(unionRng, .Range(.Cells(i, 25), .Cells(i, 30))) ' 'P to W
            Else
                Set unionRng = .Range(.Cells(i, 25), .Cells(i, 30))
            End If
        End If
    Next i
End With

If Not unionRng Is Nothing Then
    If IsEmpty(reportsheet.Range("J200").End(xlUp)) And reportsheet.Range("J200").End(xlUp).Row = 1 Then
        unionRng.Copy reportsheet.Range("J150")
        unionRng.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
          False, Transpose:=True
    Else
        unionRng.Copy reportsheet.Range("J200").End(xlUp).Offset(1, 0)
        unionRng.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
          False, Transpose:=True
    End If
End If

但转置到另一个工作表到单元格J150无法正常工作,我总是得到错误1004.

我的PasteSpecial Transpose:=True出现了什么问题?

1 个答案:

答案 0 :(得分:1)

此处的问题是unionRng是一系列统一的单元格选择,您尝试使用unionRng.PasteSpecial粘贴,但Excel不支持粘贴到多个单元格选择中。

所以你可能意味着下面的内容

unionRng.Copy 'copy only and past below
reportsheet.Range("J150").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
   SkipBlanks:=False, Transpose:=True

您的其他PasteSpecial同样的问题。