プログラミングの基礎(2)


TOPに戻る

1)繰り返し

通常は,プログラムの上から下まで,順番に1回だけ実行する. 何回か同じ作業を繰り返したいときには,For〜Nextループを使う. 前回の課題と同じようにSubからEnd Subまでをコピー,ペーストし名前をmath2に変更して,新しいソースコードを作成しておく.

Sub math2()
Dim number, multi, i As Integer

number = Worksheets("Sheet1").Cells(1, 1).Value

For i = 1 To 9
    multi = i * number
    Worksheets("Sheet1").Cells(i + 1, 1).Value = number
    Worksheets("Sheet1").Cells(i + 1, 2).Value = "x"
    Worksheets("Sheet1").Cells(i + 1, 3).Value = i
    Worksheets("Sheet1").Cells(i + 1, 4).Value = "="
    Worksheets("Sheet1").Cells(i + 1, 5).Value = multi
Next i

End Sub

 2行目は,変数の宣言である.numberとmultiとiという3つの変数を,それぞれ整数を覚える入れ物として宣言している.その次の行は,前と同じくセルの値を変数に代入している(numberという変数に数値を入力している).
 次の行からが繰り返しの指定となっている.
 
 For i = 1 To 9 
 ****(実行文)
 Next i

 というのは,「Next i」までにある実行文を,変数iの値を1から9まで順に変化させながら繰り返せ,という実行文である.最初はiに1を入れて実行し,ここへ戻ってきてiに2を入れて実行し,というふうに,合計9回繰り返すことになる.

 次の行のmulti = i * numberで,人間が入力した数numberと,コンピュータが自動的に代入するiとをかけて,その結果をmultiという変数に覚えさせている.ここから,見やすいように右に行を寄せている.これをインデントという.

 その次からの5行で,かけ算の結果をセルに表示させている.1つ目のセルにはnumberを,2つ目には”x”を,3つ目にはiを,4つ目には”=”を,5つ目にはmultiを出力している.number,i,multiについては代入されている数値が出力される.

 このプログラムは,入力した数字の段の九九を計算することになる.このプログラムを保存し実行してみる. Book1に戻り,全てのセルの値を消去し,新しくセルA1に数値を代入する.メニューからツール→マクロ→マクロを選び,math2を選択し実行ボタンを押す.すると次のように表示される.

 式の出力が1つのセルに1つの文字,数値などであまりスマートではない.そこでこれらを1つのセルに出力させるには,式の出力の部分を,「&」を使って以下のように書き換える.

    Worksheets("Sheet1").Cells(i + 1, 1).Value = number & "x" & i & "="
    Worksheets("Sheet1").Cells(i + 1, 2).Value = multi

すると,つぎのようになる.

 この出力方法は覚えておくと便利.

2)条件判断

 プログラムを実行中に,何らかの判断をさせたい場合がある.たとえば,入力された数が60以上だったら合格と出力し,60未満だったら不合格と出力する等.判断にはif文を使う.一般的な表現を以下に示す.

If 条件1 Then
   条件1が満たされる時に実行する文を並べる
ElseIf 条件2 Then
   条件2が満たされる時に実行する文を並べる
Else
   条件がすべて満たされないときに実行する文を並べる
End IF

ElseIf文は,何回でも必要なだけ使うことができる.また,ElseIf文やElse文はなくても構わない.

 ソースコードmath2を修正し,セルA1に入力されている数が,0以下ならば小さすぎると表示し,10以上ならば大きすぎると表示して,何も計算せずに終了させるように修正する.

Sub math2()
Dim number, multi, i As Integer

number = Worksheets("Sheet1").Cells(1, 1).Value

If number <= 0 Then
  MsgBox "Too Small"
ElseIf number > 9 Then
  MsgBox "Too Large"
Else
  For i = 1 To 9
    multi = i * number
    Worksheets("Sheet1").Cells(i + 1, 1).Value = number & "x" & i & "="
    Worksheets("Sheet1").Cells(i + 1, 2).Value = multi
  Next i
End If

End Sub

 <=というのは以下.>は「より大きい」.条件としては,ほかに,<は未満、=等しい、<>等しくない、>=以上,等がある.
 条件が合えば,Then と ElseIf に囲まれた文を実行する.条件が満たされなければ,次のElseIf文へ行き,さらに条件が満たされなければIfブロック(If〜End If)の外に出る.


 「MsgBox」とは小さなウィンドウを作成しそこにメッセージを出力できるものである.例では,ダブルクォーテーションマークで囲まれた文字が出力されるだけで,ウィンドウに表示されるOKボタンで閉じる事ができる簡単なものである.パラメータを設定することにより表示形式を色々と変える事ができるので興味のある人はヘルプなどを参照してやってみると良い.


 このソースコードを保存し,実際に実行してみよう.0以下の数や10以上の数をセル入力しておいて実行させた時に,プログラムがそこで止まることを確認する.また,1から9までの数なら,今まで通りちゃんと九九を計算することも確認しておく.


TOPに戻る