こんにちは、ギェギョポンです。
Excelでユーザー定義関数を作ってテストをしているときや実際に使っているとき、プログラムのコードを変更しても、その関数を使っているセルの値が書き換わらなくて困った、という人はいないでしょうか1。
この記事では、どのような状況でそれが起こり、どう対応すればよいかをまとめました。
同じようなことで困っている方に、この記事が参考になればと思います。
本文
まとめ
問題点
ユーザー定義関数に書いたプログラムのコードを変更して再計算を実行しても、その関数を使ったセルの値が書き換わらない。
どのような時に起こるか
コード変更後にそれを保存し、「再計算実行」(または「F9」)や「シート再計算」(または「Shift + F9」)で再計算を実行したとき。
対応方法
対応方法を3つ示します。
- 「Ctrl + Alt + F9」を押します2。
(ブック全体のセルが再計算されるとのことです。) - セルをダブルクリックして編集モードにして、何も変更せずにEnterキーを押します。
(操作したセルだけが再計算されますので、再計算させたいすべてのセルで操作をおこなう必要があります。同じ式であれば、他のセルから式をコピー&ペーストすることでも再計算が実行されます。) - コード変更後に保存をしない。
(保存をしなければ、「再計算実行」や「シート再計算」によって再計算を実行することができました。)
詳細
状況
話を簡単にするために、2つのセルの足し算をするユーザー定義関数「calculate」を作りました。この関数は、1つ目に指定したセルの数字と2つ目に指定したセルの数字を足し算し、その結果を関数の値として返します。

次に、「Microsoft Visual Basic for Applications」(プログラムエディター)でcalculateの計算式を「A + B」から「A + B * 2」に書き換えます。そして、メニューの「ファイル」をクリックし、「『ファイル名』の上書き保存」(またはCtrl + s)を実行します3。

Excelに戻って、メニューの「数式」にある「再計算実行」や「シート再計算」をクリックしても、関数の計算結果(C列)の値は変わりません。

対応方法
以下の3つの対応方法が有効でした。
「Ctrl + Alt + F9」を実行
「Ctrl + Alt + F9」を実行すると強制的に再計算がおこなわれます。(開いているブックすべてが再計算される、とのことです参考。)

上書き保存しない
calculateのコードを変更した後に上書き保存をしなければ、「再計算実行」や「シート再計算」によって再計算を実行することができます。
セルを一度編集モードにする
calculateを含むセルをダブルクリックして一度編集モードにし、何も変更せずにEnterキーを押します。すると、そのセルの内容が再計算されます。

C2セルの数式をC3~C5セルにコピーすると、C3~C5セルも再計算されます。
関連情報
再計算の種類
Microsoftが公開している情報では、以下のように、「再計算」には少なくとも以下の4つの種類があるようです。
開いているブックのすべてのワークシートを計算する。 | F9 |
作業中のワークシートを計算する。 | Shift + F9 |
最後の計算の後で変更したかどうかに関係なく、開いているブックのすべてのワークシートを計算する。 | Ctrl + Alt + F9 |
依存する数式を再度チェックし、要計算とマークされていないセルも含め、開いているブックのすべてのセルを計算する。 | Ctrl + Alt + Shift + F9 |
環境
ソフトウェア
- OS:Windors 10 Pro バージョン 22H2
- Microsoft Office 365 : MSO (バージョン 2208 ビルド 16.0.15601.20644) 64 ビット
その他
- 実施日:2023年6月
関連情報
参考
- Microsoft:Excel のキーボード ショートカット