私はお互いのキーをオフにExcelで一連の配列の数式を持っています。これらは、独自のExcelアドインを使用して生成された一連のデータに合わせて自動的にサイズが変更されます。
しかし、私のコードが配列式のいくつかを正しい新しいサイズに書き換えるときは、シート上の別の無関係なセルを編集するか、シートを保存するか、またはF9を押すまで、セルはすべて#N/Aとして表示されます。
Application.Calculate、ActiveSheet.Calculateなどのコードを使用しても効果はありません。
ただし、SendKeys "{F9}"を使用しています。
例として、これらはシート上の2つの式です。
={IF(LEN(INDEX(A:A, ROW()))>0,ROW(A:A)+2)}
そして
={LARGE(OFFSET($J$1,0,0,ROW()),1)}
最初の数式は、セルの範囲にプログラムで書き込んだ後で正常に動作します。それは、単にテキストが入っているセルの行番号を伝えます。
2番目の式は、セル範囲にプログラムで書き込んだ後は機能しません。これは、以前に番号リスト(最初の数式の出力)に表示されていた最大の行番号を私に与えます。 F9キーを押すと、2番目の式が正しく更新されます。 VBAでApplication.Calculateを実行すると、何も起こりません。私はまた、ワークシートレベルで利用可能なさまざまな他の再計算メソッドも試しましたが、運はありません。
誰かが前にこのような何かを遭遇しましたか?
edit:
The resize code essentially boils down to something like this (stripping out all of the support code that allows me to make more generalized calls to it):
まず、私は:
formula = dataSheet.Cells(startRow, startColumn).formula
じゃあ後で:
Set DeleteRange = dataSheet.Range(dataSheet.Cells(startRow, startColumn), dataSheet.Cells(bottomBound, rightBound))
DeleteRange.ClearContents
Set DeleteRange = Nothing
その後、
Set resultRange = dataSheet.Range(dataSheet.Cells(startRow, startColumn), dataSheet.Cells(startRow + Height - 1, startColumn + Width - 1))
resultRange.FormulaArray = formula
Set resultRange = Nothing
ナットシェルでは、数式のコピーを作成し、範囲をクリアしてから書き直します。