在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)