01.png

家計簿をVBAで作っているのですが、日々の支出金額を入力するたびに集計して、合計金額セルを更新する形でした。

まず、
[ひらめき]セルが更新されたイベント
Workbook_SheetChangeを使用。
ワークブック内のシート共有で使うのでブック配下のイベントにしました。

[ひらめき]Workbook_SheetChangeの最後で、配列にいれた集計した結果をセルに入力する。
ここが間違いでした。ここでも”セルの値が変更された”と認識されるので、Workbook_SheetChangeが呼ばれちゃうんです。

[次項有]
結果関数のネスト呼び出しで、無限ループ突入でした。

[決定]改善策
Workbook_SheetChangeが呼ばれた直後、変更されたセルがどのセルかを判定することにしました。
支出を入力するセルであれば、その後のコードを実行するようにします。

まだ最初の月の1月なので再現していませんが、きっと、1月→2月とセルを変更しただけでこの関数が走ってしまいますね。

にほんブログ村 IT技術ブログへ
にほんブログ村