一个专注于大数据技术架构与应用分享的技术博客

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)
赞(1)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《VBA脚本报错:运行时错误 '1004':不能取得类 WorksheetFunction 的 Transpose 属性》
文章链接:https://macsishu.com/vba%e8%84%9a%e6%9c%ac%e6%8a%a5%e9%94%99%ef%bc%9a%e8%bf%90%e8%a1%8c%e6%97%b6%e9%94%99%e8%af%af-1004%e4%b8%8d%e8%83%bd%e5%8f%96%e5%be%97%e7%b1%bb-worksheetfunction-%e7%9a%84-transpose-%e5%b1%9e
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。