1

ワークブックにこの小さな問題があります。配列数式を使用して、非常に長い関数を単純化したかったのです。この式はうまく機能し、期待どおりの結果が得られます。ただし、私の 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(または少なくともこの場合)が、これは同僚によって書かれました)

4

2 に答える 2

1

この問題は、配列数式をそれ自体の上にコピーできないために発生します。

たとえば、セル A1 に配列数式があり、それをセル A10 にコピーする場合、A1 をコピーして A1:A10 を強調表示して貼り付けることはできません。うまくいきません。A1 をコピーしてから、A2:A10 を強調表示する必要があります。

Rows(iFormuleExceptionRNIAC)とはいえ、おそらく問題は、からの行がおそらくこれと交差するという事実に存在しますrange(Rows(iStart), Rows(iStart - 1 + iNbRow))

交差しないことを確認できれば、配列数式をコピーできます。

于 2012-10-25T16:05:19.380 に答える