Excel2003 VBA Functionの定数に関して教えて下さい
Excel2003 VBA Functionの定数に関して教えて下さい。
例えば、
Function test(x, y)
test = A * x + B * y + C
End Function
という数式を定義し、プログラム中で使用したいとします。
数式を見て分かる通り、xとyは変数でA, B, Cは定数です。
そして、これらA, B, Cの値を
A = Cells(3,5)
B = Cells(3,6)
C = Cells(3,7)
のようにシート上の値を使用したいのですが、
上記のようにプログラム中で宣言してもFunctionの中では値が入っていないものとみなされてしまいます。
この問題の回避のため、、
Function test(x, y)
A = Cells(3,5)
B = Cells(3,6)
C = Cells(3,7)
test = A * x + B * y + C
End Function
のようにFunctionの中に、定数を宣言を入れてしまうか、
Function test(x, y, A, B, C)
test = A * x + B * y + C
End Function
のようにA, B, Cも定数ではなく、変数として扱う方法があります。
しかしながら、一つ目の方法では、こういったFunctionの数が増えてくると、
同じ定数を複数の場所で宣言することになり、後からプログラムを書き直そうとしたときに
極めて不便です。
一方で、2つめの方法では、test(x, y, A, B, C)のように、
一つのFunctionを呼び出すためにごちゃごちゃしてスペースをとり、
後から見たときに見にくくなります。
後、Constとして定義する方法もありますが、
A = Cells(3,5)
のように、シート上のデータを代入する方法をとりたいと考えています。
上記以外の方法以外でもっとスマートな方法がありましたら
教えて頂けますでしょうか?
お礼
な・なるほど! 関数名をそのまま返さないんですね! 回答ありがとうございます。