首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组公式和PasteSpecial:=Formats

数组公式和PasteSpecial:=Formats
EN

Stack Overflow用户
提问于 2012-10-25 22:37:03
回答 2查看 3.8K关注 0票数 1

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

以前有没有人经历过这种情况,并找到了合适的解决方案?我似乎在谷歌上找不到帮助的答案。如果需要,我会发布代码,但它是相当直接的(Row.Copy ... Rows(something, something).PasteSpecial...),并且无论如何都可以使用非数组公式。

编辑:代码:

代码语言:javascript
复制
 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的用法很难看(至少在这种情况下是这样),但这篇文章是我的一个同事写的)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-26 00:05:19

出现这个问题是因为您不能在数组公式的顶部复制它。

例如,如果您在单元格A1中有一个数组公式,并且希望将其复制到单元格A10,则不能复制A1并突出显示A1:A10并进行粘贴。恐怕行不通。您必须复制A1,然后高亮显示A2:A10。

也就是说,问题很可能存在于来自Rows(iFormuleExceptionRNIAC)的行可能与此range(Rows(iStart), Rows(iStart - 1 + iNbRow))相交的事实中

如果你能确保它们不相交,那么复制数组公式就可以了。

票数 1
EN

Stack Overflow用户

发布于 2022-03-03 09:17:33

将格式粘贴到后面,然后粘贴公式。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13070982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档