数组公式和PasteSpecial:=格式

时间:2012-10-25 14:37:03

标签: excel excel-vba excel-2007 array-formulas vba

我在工作簿中遇到这个小问题。我想通过使用数组公式简单地完成一个非常长的函数。该公式运作良好并产生预期结果。但是,在我的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是丑陋的(至少在这种情况下),但这是由同事写的)

1 个答案:

答案 0 :(得分:1)

出现此问题是因为您无法在其自身之上复制数组公式。

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

那就是说,问题很可能是因为Rows(iFormuleExceptionRNIAC)的行可能与此range(Rows(iStart), Rows(iStart - 1 + iNbRow))

相交

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