コインを10回投げて、表(head)と裏(tail)の出た回数を表示するマクロを作りながら、Select Caseステートメントと乱数の基本について学びます。
【VBA】コイン投げて表と裏の出た回数を表示するマクロ
Select Caseステートメントを使ってマクロを書いてみました。Ifステートメントを使ってもほぼ同じ内容になります。頭に「’」が付いた赤い文字は補足コメントなので、プログラムに影響しません。
'[VBA] コインを投げて表と裏の出た回数を表示するコード Sub Coin() Randomize Dim r As Double Dim i As Integer Dim head As Integer, tail As Integer For i = 1 To 10 '乱数を変数rに格納 r = Rnd '乱数rについて場合分け Select Case r '乱数rが0.5より小さい場合 Case Is < 0.5 head = head + 1 'それ以外の場合 Case Else tail = tail + 1 End Select Next i Debug.Print "表は" & head & "回です" Debug.Print "裏は" & tail & "回です" End Sub
Coin() を実行すると、イミディエイトウィンドウに
「表は X 回です、裏が Y 回です」
と表示されます。X と Y の部分は実行するたびに値が変わりますが、必ず X + Y = 10 となっています。
2行目にある Randomize という記述は、乱数テーブルを初期化するものです。詳しく解説すると長くなってしまうので、ここでは割愛します。「Rnd 関数を使うときには必ず最初にこの一文を入れる」ということだけ覚えておいてください。
Rnd関数は 0 から 1 の乱数を発生させます。
r = Rnd
として r に乱数を入れています。
Select Case は条件分枝のためのステートメントです。
Select Case [変数] Case Is [条件1] [処理1] Case Is [条件2] [処理2] Case Else [処理3] End Select
という形式で記述しますが、[条件] のところで変数を省略します。 Ifステートメントを2回使わなければならないようなときに、片方を Select Caseステートメントで記述することで、マクロを読みやすくするなどのメリットがあります。さて「コイン投げマクロ」では
Select Case r Case Is < 0.5 head = head + 1 Case Else tail = tail + 1 End Select
となっています。の最初のところで r を指定しているので、[条件] のところは「< 0.5」と書きます。「発生した乱数が 0.5 より小さい値」という条件は「確率 50%」と同値です。そのときに表 (head) の出る回数に 1 を加えます。
【次の記事】≫ ユーザーフォームの作成方法
エクセルや数学に関するコメントをお寄せください