VBA脚本报错:运行时错误 ‘1004’:不能取得类 WorksheetFunction 的 Transpose 属性

在VBA中,需要取得SHEET页某个区域的内容,并将取得的内容进行转置。

使用如下代码来进行转置:

dim sheetval as variant
Sheetval = Application.WorksheetFunction.Transpose(sheet.Range("A3:D10"))

结果,执行时报错:运行时错误 ‘1004’:不能取得类 WorksheetFunction 的 Transpose 属性

经分析,原因为sheet.Range(“A3:D10”)中的一个单元格的值太长,有100多个字符。将该单元格内容清除或只留几个字符,则上面的代码不会报错。

可能是这个方法本身对要处理的值长度有限制。

于是参考网上的代码,写了一个实现转置的函数供调用:

Function Transpose(Arr As Variant)
    Dim arrTmp() As String
    Dim lstRo As Long
    Dim Ro As Long
    Dim lstCol As Long
    Dim Col As Long
    Dim lRo As Byte
    Dim lCol As Byte
    lstRo = UBound(Arr, 1)
    lstCol = UBound(Arr, 2)
    lRo = LBound(Arr, 1)
    lCol = LBound(Arr, 2)
    ReDim arrTmp(lCol To lstCol, lRo To lstRo)
    For Ro = lRo To lstRo
        For Col = lCol To lstCol
            arrTmp(Col, Ro) = Arr(Ro, Col)
        Next Col
    Next Ro
    Transpose = arrTmp
End Function

对于上面的功能,修改为调用这个转置函数:

Sheetval =Transpose(sheet.Range("A3:D10").value)
【版权说明:仅允许非商业转载且请注明出处:Mac私塾 网址:http://macsishu.com】

发表评论

邮箱地址不会被公开。

Captcha Code