Excelでユーザー関数の書き換え後に再計算させる方法

ExcelのシートでC2セルに「=calculate(A2,B2)」と入力しC3~C5セルにコピーし、プログラムエディターで「Function calculate(A As Integer, B As Integer) As Integer【改行】calculate = A + B【改行】End Function」というコードを入力したことを示した画像
図1 Excelシートの内容とプログラムコード
GoogleAdsense広告
[広告, Ads, 广告]

こんにちは、ギェギョポンです。

Excelでユーザー定義関数を作ってテストをしているときや実際に使っているとき、プログラムのコードを変更しても、その関数を使っているセルの値が書き換わらなくて困った、という人はいないでしょうか1
この記事では、どのような状況でそれが起こり、どう対応すればよいかをまとめました。

同じようなことで困っている方に、この記事が参考になればと思います。

本文

まとめ

問題点

ユーザー定義関数に書いたプログラムのコードを変更して再計算を実行しても、その関数を使ったセルの値が書き換わらない。

どのような時に起こるか

コード変更後にそれを保存し、「再計算実行」(または「F9」)や「シート再計算」(または「Shift + F9」)で再計算を実行したとき。

対応方法

対応方法を3つ示します。

  • 「Ctrl + Alt + F9」を押します2
    (ブック全体のセルが再計算されるとのことです。)
  • セルをダブルクリックして編集モードにして、何も変更せずにEnterキーを押します。
    (操作したセルだけが再計算されますので、再計算させたいすべてのセルで操作をおこなう必要があります。同じ式であれば、他のセルから式をコピー&ペーストすることでも再計算が実行されます。)
  • コード変更後に保存をしない
    (保存をしなければ、「再計算実行」や「シート再計算」によって再計算を実行することができました。)
    ■■■注意■■■
    • ソフトウェアのバージョンやパソコンの機器構成などによって違う結果になるかもしれません。
    • シート全体やブック全体の再計算を実行した場合、式がたくさんあったりすると再計算が終わるまでに時間がかかることがあります。また、「OK」ボタンを押さないと先に進まないようなプログラムの場合には、すべてのセルに対して操作が必要になります。

    詳細

    状況

    話を簡単にするために、2つのセルの足し算をするユーザー定義関数「calculate」を作りました。この関数は、1つ目に指定したセルの数字と2つ目に指定したセルの数字を足し算し、その結果を関数の値として返します。

    ExcelのシートでC2セルに「=calculate(A2,B2)」と入力しC3~C5セルにコピーし、プログラムエディターで「Function calculate(A As Integer, B As Integer) As Integer【改行】calculate = A + B【改行】End Function」というコードを入力したことを示した画像
    図1 Excelシートの内容とプログラムコード

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

    プログラムの書き換え個所と上書き保存の方法を示した画像
    図2 プログラムの書き換えと保存

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

    「再計算実行」や「シート再計算」の位置と、C列のセルの値が変わらないことを示した画像
    図3 再計算不可

    対応方法

    以下の3つの対応方法が有効でした。

    「Ctrl + Alt + F9」を実行

    「Ctrl + Alt + F9」を実行すると強制的に再計算がおこなわれます。(開いているブックすべてが再計算される、とのことです参考。)

    「Ctrl+Alt+F9」を実行したところ、C2~C5セルが書き換わったことを示す画像
    図4 Ctrl+Alt+F9による再計算
    上書き保存しない

    calculateのコードを変更した後に上書き保存をしなければ、「再計算実行」や「シート再計算」によって再計算を実行することができます。

    セルを一度編集モードにする

    calculateを含むセルをダブルクリックして一度編集モードにし、何も変更せずにEnterキーを押します。すると、そのセルの内容が再計算されます。

    ダブルクリックして編集モードになった状態と再計算後の状態を示した画像
    図5 編集せずEnterして再計算

    C2セルの数式をC3~C5セルにコピーすると、C3~C5セルも再計算されます。

    関連情報

    再計算の種類

    Microsoftが公開している情報では、以下のように、「再計算」には少なくとも以下の4つの種類があるようです。

    開いているブックのすべてのワークシートを計算する。F9
    作業中のワークシートを計算する。Shift + F9
    最後の計算の後で変更したかどうかに関係なく、開いているブックのすべてのワークシートを計算する。Ctrl + Alt + F9
    依存する数式を再度チェックし、要計算とマークされていないセルも含め、開いているブックのすべてのセルを計算する。Ctrl + Alt + Shift + F9
    表1 再計算を実行するショートカット(Microsoft サポートから引用)

    環境

    ソフトウェア
    • OS:Windors 10 Pro バージョン 22H2
    • Microsoft Office 365 : MSO (バージョン 2208 ビルド 16.0.15601.20644) 64 ビット

    その他

    • 実施日:2023年6月

    関連情報

    その他

    脚注

    1. 私自身がそれで苦労した、というのが、この記事を書いたきっかけです。
    2. キーボードの「Ctrl」キーを押しながら、「Alt」キーを押しながら、「F9」キーを押します。
    3. 上書き保存を実行しないと、この問題は起こりませんでした。
    タイトルとURLをコピーしました