【Excel マクロ VBA】Functionの戻り値がエラーを返したときに確認すること

資料請求番号:SH45

VBAのFunctionプロシージャがうまく使えないときのデバック方法

VBAのFunctonプロシージャを使用していると、エラーを返したり、想定と異なる計算結果を出してきたりします。ここでは、エラーや想定外の計算結果(オーバーフロー含)が起きた際のデバックで確認すべきことをまとめます。

プログラム例

今回は以下のようなプログラムを例に取り、よくあるエラー例を解説します。

プログラム例では

の演算をしています。

正常稼働時

x = 10, y = 2, k = 2としたとき、

を計算すれば値は7となるはずです。

エラーの原因① 引数の順番が違う

ここでx = 0としたとき値は2となります。

ところが、引数の順番が異なる場合、例えば
F1(x,y)と記述すべきところをF1(y,x)と記述したとき、

このようなエラーを返します。

これはFunction F1内でxとyが入れ替わってしまっているために起こったバグです。
0÷2の演算はできますが、2÷0の演算はできないため、エラーを起こしました。

エラーの原因② 定数をパブリック変数にしていない

演算

の中で、kは定数です。したがって、Functionプロシージャの外部で定義することが多いです。
このとき、kはパブリック変数として、Functionプロシージャ内外で利用できるようにしなければいけません。

例えば、kをパブリック変数とせずに、メインプログラムで定義してしまうと

kはなかったことにされてしまいます。したがって
z = (10/2) + 0が演算されてしまい、値として5を返すのです。

shimakei8364

Recent Posts

  • PC/プログラミング

ブログ飯について ~ブロガーは稼げるのか?~

資料請求番号:PH ブログで収入を得るこ…

3年 ago
  • 写真/旅行

花の撮り方(可愛く撮る5つのコツを紹介)

資料請求番号:PH15 花を撮るためのレ…

4年 ago
  • English ver.

【Windows10】How to change file extension?

Display the file ext…

5年 ago
  • 写真/旅行

【観光 買い物】おすすめの秋葉原電気街の歩き方マップ

資料請求番号:PH83 秋葉原迷子卒業!…

5年 ago
  • 化学/物理

【どうやってはかる?】富士山の体積の計算方法

資料請求番号:TS31 富士山の体積をは…

5年 ago
  • 化学/物理

数学を使った美しい曲線のグラフィック

資料請求番号:TS11 エクセルを使って…

5年 ago