第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の和を求める計算です。
シート
w1
では皆さん、実行コードと消去コードを考えてください。
解答例は、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の和を計算させます。
シート

w2


第1話へ 第3話へ

004


vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る