复制和转置时克服 255 个字符的限制

Overcoming 255 character limit when copying and transposing

基本上在单元格 B42 和 B43 中我有超过 255 个字符,我的代码中断并给出 运行 类型错误不匹配 13。

当我运行下面一行:

    CopyTranspose wb.Sheets("Apple").Range("B17:B46"), shtDest.Cells(pasteRow, "R")

我在这里遇到不匹配错误:

Sub CopyTranspose(rngCopy As Range, rngDest As Range)
rngDest.Resize(rngCopy.Columns.Count, rngCopy.Rows.Count).Value = _
Application.Transpose(rngCopy.Value)
End Sub

如果您 Google 您会发现 Application.Transpose 有几个奇怪的限制。但您可以编写自己的 TransposeArray 函数,看看效果是否更好。

Public Function TransposeArray(myarray As Variant) As Variant
    Dim x As Long
    Dim y As Long
    Dim Xlower As Long, Xupper As Long
    Dim Ylower As Long, Yupper As Long
    Dim tempArray As Variant

    Xlower = LBound(myarray, 2)
    Ylower = LBound(myarray, 1)
    Xupper = UBound(myarray, 2)
    Yupper = UBound(myarray, 1)
    ReDim tempArray(Xlower To Xupper, Ylower To Yupper)
    For x = Xlower To Xupper
        For y = Ylower To Yupper
            tempArray(x, y) = myarray(y, x)
        Next y
    Next x
    TransposeArray = tempArray
End Function

然后像 Application.Tanspose

一样使用它
Sub CopyTranspose(rngCopy As Range, rngDest As Range)
    rngDest.Resize(rngCopy.Columns.Count, rngCopy.Rows.Count).Value = _
        TransposeArray(rngCopy.Value)
End Sub

如果您只是想复制和转置一个范围,那么这样做:

wb.Sheets("Apple").Range("B17:B46").Copy
shtDest.Cells(pasteRow, "R").PasteSpecial Transpose:=True

或者,如果只想复制没有格式的值,那么

shtDest.Cells(pasteRow, "R").PasteSpecial xlPasteValues, Transpose:=True

编辑: 问题可能出在 Application.Transpose(rngCopy.Value) 作为转置输入数组或单元格范围,而不是值。