0

ワークシートの任意のセルに変更があった場合に、複数の行にわたってゴール シークを適用したいと考えています。これを行 7 から行 11 に適用したいと思います。最初の問題は、これを実行するたびに Excel がクラッシュすることです。私はVBAを学び始めたばかりなので、どんな助けも大いに感謝しています。ありがとうございました!

私のコードは以下の通りです:

Option Explicit

Private Sub Worksheet_Calculate()
CheckGoalSeek
End Sub

Private Sub CheckGoalSeek()
Range("T7").GoalSeek Goal:=0, ChangingCell:=Range("V7")
End Sub
4

1 に答える 1

2

ワークシートの計算 -> ゴールシークの計算 -> ワークシートの計算 -> ... という無限ループを引き起こしているようです。

1 つのオプションは、ゴール シークをトリガーするイベントを変更することです。

Worksheet_Change イベントをお勧めします。サブ宣言を除いて、イベント コードは同じ Private Sub Worksheet_Change(ByVal Target As Range)です。

単純なForループは、さまざまな行でゴール シークを実行します。

 Option Explicit

 Private Sub CheckGoalSeek()
    Dim i as Long
    For i = 7 to 11
        Range("T"& i).GoalSeek Goal:=0, ChangingCell:=Range("V"& i)
    Next
 End Sub
于 2013-04-26T17:50:27.347 に答える