概要
「適用対象」セクションに記載されている Microsoft Excel のバージョンでは、Visual Basic for Applicationsを使用してカスタム計算を返すユーザー定義関数を作成できます。 ただし、ユーザー定義関数は、ワークシート セル内の数式によって呼び出されたときに Microsoft Excel 環境を変更するアクションを実行できません。
詳細情報
ワークシート セル内の数式によって呼び出されるユーザー定義関数は、Microsoft Excel の環境を変更できません。 これは、このような関数が次のいずれかを実行できないことを意味します。
-
スプレッドシートにセルを挿入、削除、書式設定します。
-
別のセルの値を変更します。
-
ブックにシートを移動、名前変更、削除、または追加します。
-
計算モードや画面ビューなど、任意の環境オプションを変更します。
-
ブックに名前を追加します。
-
プロパティを設定するか、ほとんどのメソッドを実行します。
ユーザー定義関数の目的は、ユーザーが Microsoft Excel に付属する関数に含まれていないカスタム関数を作成できるようにすることです。 Microsoft Excel に含まれる関数は、環境を変更することもできません。 関数は、入力されたセルに値またはテキストを返す計算を実行できます。 環境の変更は、Visual Basic サブルーチンを使用して行う必要があります。 計算中に、Excel はユーザー定義関数を含むセルの優先順位を調べます。 計算プロセス中にこれまでにすべての優先順位が計算されていない場合、Excel は最終的にユーザー定義関数を呼び出し、Null または Empty セルを関数に渡します。 Excel では、すべての優先順位を計算するのに十分な計算パスが確実に発生します。 最後の計算パス中に、ユーザー定義関数にセルの現在の値が渡されます。 これにより、予期しない引数を使用して、ユーザー定義関数が予想よりも頻繁に呼び出される可能性があります。 したがって、ユーザー定義関数は予期しない値を返す場合があります。正しい計算を行うために、計算で使用されるすべての範囲を引数として関数に渡す必要があります。 関数の VBA コード内の範囲を参照するのではなく、計算範囲を引数として渡さない場合、Excel は計算エンジン内でそれらを考慮できません。 したがって、Excel では、ユーザー定義関数を計算する前にすべての優先順位が計算されるようにブックを適切に計算できない場合があります。
関連情報
"Visual Basic ユーザー ガイド" バージョン 5.0、第 4 章、「Visual Basic プロシージャとは」 「ユーザー定義ワークシート関数の記述」、Microsoft Excel 7.0 Visual Basic ヘルプ ファイルです。