関数定義で計算をしたいのですが、
Def fn(F-Basic)でやろうしましたが、うまく動きませんでした。
VBの関数定義はどのようにすればよいのでしょうか。
関数定義ってどんなものなんでしょう?
関数定義ってSubのこと?
とにかくVBの関数は、宣言のし方が変わってますから、(JavaScriptと比較したかぎりは)
メニューにプロジージャの宣言って言うのがあった(ユーザー設定で組替えようとするとあるのが分かる)ので、
それを使うと楽です。
あとは、GoSubでラベルに飛んで、returnで戻ることもできるそうです。ちょっと古いやり方らしいけど。
って、ちがうかなぁ…。って、ちがうよねぇ…。
Cで言うところのマクロ関数みたいなものです。
(#define でつくるアレです)
それなりにお手軽なんですけど、VBではFunctionをつかいます。
たとえば、半径を入れたら円の面積を返す関数は、
Public Function fncdblEnMenseki(dblHankei As Double) As Double
fncdblEnMenseki = dblHankei * dblHankei * 3.141592653
End Function
この関数を呼ぶときには、
dblMenseki = fncdblEnMenseki(1.5)
とか
If fncdblEnMenseki(dblData) > 12.56 Then
とかします。
戻り値が不要なときは、
Call fncdblEnMenseki(1.732)
とかできます。意味ないけど
デフォルトで参照渡しになるVBでは、Sub使って
引数変数で答えをかえしてもいいのですが
ヘルプから引用させていただきました。
ユーザ定義関数を宣言します。
形式
DEF FN 関数名[(パラメータリスト)]=式
FN+"名前"が関数名となります。
(A+B)×C の計算を行うユーザ定義関数ABCは次のように定義します。
def fnABC(A, B, C) = (A+B)*C
定義したユーザ定義関数を使用して、(1+2)×3の結果を変数Yに代入するためには記述します。
Y = fnABC(1, 2, 3)
のような物ですが…
これはVBじゃなくて、F-BASICです。
VBでやるなら、Sayさんの言われるように
ファンクション等で代用する方法になるでしょう。
マクロ展開はVBでは行えないので。
わかりました。
試してみます。
ありがとうございました。
Functionで関数を定義したのですが、
その関数を標準モジュールに入れて動かせるように
するにはどのようにすればいいのでしょうか。
(Publicにしても定義されない。)
Cだと
int fncAdd(int a,int b){
return a + b ;
}
のように戻り値をreturnのうしろにかきますが、VBだと、
Public Function fncAdd(a As Long , B As Long) As Long
fncAdd = a + b
End Function
のように、「関数名 = 戻り値」の形でかえします。
同一プロジェクトの別モジュールから参照するなら、
Publicにする必要がありますが、たとえば
Formモジュールに置いて、同一モジュール内でしか
利用しないのならPrivateがいいでしょう。
その場合、呼ばれる関数が上にあるほうが
実行速度が向上するはずです。たぶん。
解決しました。有り難う御座います。
ツイート | ![]() |