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も参照のこと。