第6講 Functionプロシージャ
第2話 Funcitonプロシージャによる素数判定マクロ
Functionプロシージャによる素数判定マクロコード例
Function f(n As Long)
Dim i As Long, r As Long
If n = 2 Then
f = 1
Exit Function
End If
If n Mod 2 = 0 Then
f = 0
Exit Function
End If
r = Sqr(n)
For i = 3 To r Step 2
If n Mod i = 0 Then
f = 0
Exit Function
End If
Next
f = 1
End Function
次に引数が2つの例を考えましょう。
例によって、はじめの数から終わりの数まで足していく計算を考えましょう。
はじめの数が15,終わりの数が50なら、
15+16+17+・・・+50の和を求める計算です。
シート
では皆さん、実行コードと消去コードを考えてください。
解答例は、30行下。
コード例
Private Sub CommandButton1_Click()
Dim h As Long, o As Long
h = Cells(5, 2)
o = Cells(6, 2)
Cells(7, 2) = f(h, o)
End Sub
Function f(h As Long, o As Long)
Dim w As Long, i As Long
w = 0
For i = h To o
w = w + i
Next
f = w
End Function
Private Sub CommandButton2_Click()
Columns("B").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
Funcitonプロシージャのときは、f(h, o)という私の好きな記述法でよいのです。
C言語では、戻り値がないタイプでも戻り値があるタイプでもこの記述法なのです。
VBでは戻り値がないプロシージャであるSubプロシージャでは、この記述法が認められていません。
FunctionプロシージャとSubプロシージャを区別しているわけですが、
この区別は意味があるのでしょうか。
記述法に関しては、C言語やVC++の方が魅力的です。
それでは、変化の幅加えて等差数列の和が求められるようにしましょう。
はじめての値が5、終わりの値が308、変化の幅が3なら
5+8+11+・・・+308の和を計算させます。
シート
第1話へ 第3話へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る