我在工作簿中遇到这个小问题。我想通过使用数组公式简单地完成一个非常长的函数。该公式运作良好并产生预期结果。但是,在我的VBA宏中,我复制然后我进行公式粘贴,然后进行格式粘贴。格式粘贴崩溃:“无法粘贴,因为复制和粘贴区域大小不同”(或类似)。如果我使用任何其他不是数组公式的公式,则可以解决此问题。
之前有没有人经历过这个并找到合适的解决方案?我似乎无法在Google上找到帮助答案。如果需要,我会发布代码,但它很简单(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
是丑陋的(至少在这种情况下),但这是由同事写的)
答案 0 :(得分:1)
出现此问题是因为您无法在其自身之上复制数组公式。
例如,如果单元格A1中有数组公式,并且要将其复制到单元格A10,则无法复制A1并突出显示A1:A10并粘贴。它不会起作用。您必须复制A1,然后突出显示A2:A10。
那就是说,问题很可能是因为Rows(iFormuleExceptionRNIAC)
的行可能与此range(Rows(iStart), Rows(iStart - 1 + iNbRow))
如果可以确保它们不相交,则复制数组公式将起作用。