0

更新:

我有两个问题导致了这个错误。首先,我与一个 SAS 插件发生了冲突,该插件破坏了复制/粘贴功能。其次,数组中有一个空值导致转置失败。我已经处理了 null 并且一切正常。

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

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

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

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

4

1 回答 1

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
于 2013-07-18T16:51:35.407 回答