MS-Excelの世界観2(VBA)。
特にExcelなどでは、VBAを使うことで簡単なマクロ処理や高度なプログラミングを行うことができる。
VBAでは、Sub/Functionプロシージャを呼び出す時に、引数に括弧をつけて
c = check(x,y)
とすると、戻り値を返さないといけない。戻り値を受け取らない場合は括弧を外して
check x,y
と実行する。
Subプロシージャは、戻り値を返すことができない。Functionプロシージャは戻り値を返すことができる。
また、Functionプロシージャを作る場合、戻り値を返したい場合はプロシージャ名に代入する(VBAのみ。VB.NETの場合はReturn文を使う)。
ポインタのように、引数から関数外の変数にアクセスしたい時は、引数宣言の時にByValではなくByRefを指定する。
詳しい情報は以下が参考になります。
自分で作ったコードです。与えられた値段からお札の枚数を数えます。
Sub calc() Dim row Dim col Dim charge Dim ichiman Dim gosen Dim sen Dim gohyaku Dim hyaku Dim amari Dim x row = 3 col = 3 For i = 0 To 15 ichiman = 0 gosen = 0 sen = 0 gohyaku = 0 hyaku = 0 amari = 0 charge = Cells(row, col + i).value x = charge check x, 10000, ichiman check x, 5000, gosen check x, 1000, sen check x, 500, gohyaku check x, 100, hyaku amari = x Cells(row + 1, col + i).value = ichiman Cells(row + 2, col + i).value = gosen Cells(row + 3, col + i).value = sen Cells(row + 4, col + i).value = gohyaku Cells(row + 5, col + i).value = hyaku Cells(row + 6, col + i).value = amari Next i End Sub Sub check(ByRef nedan, ByVal value, ByRef count) Do While nedan >= value count = count + 1 nedan = nedan - value Loop End Sub
MS-Excelも参照のこと。
Visual Basicも参照のこと。