資料請求番号: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を返すのです。
コメントを残す