第5講 Subプロシージャ
第4話 素数判定Subプロシージャ
素数判定マクロコード例
Private Sub CommandButton1_Click()
Dim n As Integer
n = Cells(5, 2)
f (n)
End Sub
Sub f(n As Integer)
Dim i As Integer, r As Integer
If n = 2 Then
Cells(6, 2) = "素数である"
Exit Sub
End If
If n Mod 2 = 0 Then
Cells(6, 2) = "素数でない"
Exit Sub
End If
r = Sqr(n)
For i = 3 To r Step 2
If n Mod i = 0 Then
Cells(6, 2) = "素数でない"
Exit Sub
End If
Next
Cells(6, 2) = "素数である"
End Sub
Private Sub CommandButton2_Click()
Range("B5,B6").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
実行画面例
さて、このマクロを改良して、1から与えられた数までのすべての素数を表示するマクロを考えましょう。
(求める範囲の右のセルは大きな値を入力できるように3つのセルを結合しています。
やり方は、結合するセルに範囲(ドラッグによる)→右クリック→セルの書式設定→配置(セルを結合するにチェック))
素数の判定はプロシージャにやらせるとなると、
素数の数を数えるのに、グローバル変数を用意する必要があります。
プロシージャはその独立性のため、変数が使える範囲はそのプロシージャ内に限られます。
プロシージャ内でしか使えない変数をローカル変数といいます。
つまり、プロシージャの変数はすべてローカル変数なのです。
それに対して、プロシージャを超えてすべてで使える変数をグローバル変数にする必要があります。
グローバル変数を宣言するには、
Dim cn As Long
Private Sub CommandButton1_Click()
・
・
・
End Sub
Sub f(n As Long)
・
・
・
End Sub
Private Sub CommandButton2_Click()
Columns("B:U").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
のようにコードの冒頭で宣言すればよいのです。
これを実現するためには、Subプロシージャfを呼び出す側にもFor文を使う必要があります。
では皆さん考えてみてください。
第3話へ 第5話へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る