Excel将数组值放在范围内 - 转置会导致类型不匹配错误

时间:2013-07-18 16:17:30

标签: excel vba

更新:

我有两个问题导致了这个错误。首先,我与SAS加载项冲突,搞乱了复制/粘贴功能。其次,我在数组中有一个空值,导致转置失败。我处理了null,一切正常。

我正在尝试为Excel工作表分配一个值数组。当我使用TRANSPOSE功能时,我遇到类型不匹配错误。我不明白为什么,集合中只有大约200个“行”:

Worksheets("xyz").Range("A2").Resize(ValidCode, 5).Value = & _ 
  Application.WorksheetFunction.Transpose(CodeData)

当我放置静态值而不是转置数组时,它工作正常。我不明白发生了什么。它是“Variante / Variante(0到4,0到205)”类型

数组需要转置,因为我必须在代码循环中重新保存它(所以“列”是行等等)我想我可以手动转置它,但这似乎没必要。

1 个答案:

答案 0 :(得分:0)

&当我尝试实现您的代码时,字符不是必需的,实际上会引发1004错误。

否则,我无法复制您描述的错误,此示例代码可以使用或不使用Transpose函数,但您需要使用Transpose来获得所需的结果。

Sub Test()

Dim ws As Worksheet: Set ws = Sheets("xyz")
Dim rng As Range: Set rng = ws.Range("A2")
Dim r As Integer
Dim c As Integer
Dim CodeData() As Variant

ReDim Preserve CodeData(4, 205)   '## Create a dummy array to test this method
For r = 0 To UBound(CodeData, 1)  '## populate the array with random numbers
    For c = 0 To UBound(CodeData, 2)
        CodeData(r, c) = Application.WorksheetFunction.RandBetween(0, 100)
    Next
Next

'## Drop this array in to the worksheet:
rng.Resize(UBound(CodeData, 2) + 1, UBound(CodeData, 1) + 1).Value = _
    Application.WorksheetFunction.Transpose(CodeData)


End Sub