数组公式和PasteSpecial:=格式

我在工作簿中有这个小问题。 我想通过使用数组公式来实现一个非常长的函数。 该公式运作良好,并产生预期的结果。 然而,在我的VBAmacros我复制,然后我做一个公式粘贴,然后格式粘贴。 格式粘贴崩溃:“不可能粘贴,因为复制和粘贴区域的大小不同”(或类似的)。 如果我使用任何其他不是数组公式的公式,这个问题就解决了。

有没有人经历过这个,find一个合适的解决scheme? 我似乎无法在Google上find答案。 如果需要,我会发布代码,但它是相当直接的( Row.Copy ... Rows(something, something).PasteSpecial... ),并且与非数组公式一起工作。

编辑:代码:

  sRapDetail = "rap - détails" Sheets(sRapDetail).Select iStart = 17 iFormuleExceptionRNIAC = 13 iFormule1 = 14 iFormule2 = 15 iFormuleExceptionAR = 16 range(Rows(iStart - 1), Rows(1000)).Hidden = False iLastRow = Cells(65535, "B").End(xlUp).Row range("A" & iStart & ":AL" & iLastRow).Select ' selection.Borders(xlInsideVertical).LineStyle = xlNone ' selection.Borders(xlEdgeBottom).LineStyle = xlNone selection.Delete Shift:=xlUp 'RNIAC Sheets("Zoom0").Select If Cells(21, "B").Value = "" Or Cells(22, "B").Value = "" Then iLastRow = 21 Else iLastRow = Cells(21, "B").End(xlDown).Row End If iNbRow = iLastRow - 20 Sheets(sRapDetail).Select Rows(iFormuleExceptionRNIAC).Select selection.Copy range(Rows(iStart), Rows(iStart - 1 + iNbRow)).Select selection.PasteSpecial xlPasteFormulas selection.PasteSpecial xlPasteFormats 

(是的,我知道使用selection是丑陋的(或至less在这种情况下),但这是由一个同事写的)

发生此问题是因为您不能复制数组公式在其上。

例如,如果您在单元格A1中有一个数组公式并将其复制到单元格A10,则无法复制A1并突出显示A1:A10并进行粘贴。 它不会工作。 您必须复制A1,然后突出显示A2:A10。

也就是说,问题很可能存在于Rows(iFormuleExceptionRNIAC)可能与此range(Rows(iStart), Rows(iStart - 1 + iNbRow))相交range(Rows(iStart), Rows(iStart - 1 + iNbRow))

如果可以确保它们不相交,则可以复制数组公式。