Excelの計算順序に奇妙な問題があります。範囲をダーティに設定すると、従属セルが前のセルの前に空のパラメーター値で計算されます。それらの「偽の」呼び出しを検出する方法はありますか?実世界のアプリケーションでいくつかの巧妙なビジネスロジックを実行し、それらの「偽の」呼び出しがすべてのロジックを壊すので、それは私にとって重要です。さらに、RTDに登録されている場合、これらの「偽の」呼び出しはトピックに適切にバインドされないため、トピックの切断を通知しません。
Excel 2010/32ビット最新すべて。
問題を説明するために、単純な関数を作成しました。
Function Fnc(param2 As String) As String
Fnc = Application.ThisCell.Address
Debug.Print (Application.ThisCell.Address & " - " & param2)
End Function
そして手順:
Sub SetDirty()
Range("B1:C1").Dirty
End Sub
そして簡単なシート:
$ A $ 1 = fnc(A1)= fnc(B1)
セルA1、B1、C1に。
そして明らかに結果:
$ A $ 1 $ B $ 1 $ C $ 1
(CTRL+ Alt+ Shift+ F9)を再計算すると、予想どおりに次のようになります。
$ B $ 1-$ A $ 1
$ C $ 1-$ B $ 1
しかし、ここで楽しい部分があります。SetDirtyを実行した場合:
$ C $ 1-<----これはどこから来たのですか?
$ B $ 1-$ A $ 1
$ C $ 1-$ B $ 1
ご入力いただきありがとうございます。すでに一連の回避策の一部であるため、回避策ではなく、この問題を解決するソリューションをお勧めします。