VBA講座21 くじ引きマクロ(配列データのランダム表示)

 VBA 数学マクロ講座 21 回目です。
 前回記事 で解説した Array 関数を応用して くじ引きマクロ を作ってみます。

くじ引きマクロ

 袋の中に「当たり」を1つ、「ハズレ」を3つ入れて、1/4 の確率で「当たり」を引くマクロです。

 Option Base 1

 Sub くじ引き()

  Dim ball As Variant
  Dim rd as Integer

  Randomize

  ball = Array("当たり", "ハズレ", "ハズレ", "ハズレ")

  rd = Int(4 * RND + 1)

  MsgBox ball(rd)

 End Sub

 マクロを実行するとメッセージボックスに「当たり」か「ハズレ」のどちらかが表示されます。何回か試してみると「ハズレ」を引く確率が高くなっていることが分かると思います。

Variant 型変数に配列を入れます

 前回説明したように

Option Base 1

によって配列のインデックス番号の下限値を 1 に設定し、

ball = Array("当たり", "ハズレ", "ハズレ", "ハズレ")

という記述で ball(1) に「当たり」、ball(2), ball(3), ball(4) にそれぞれ「ハズレ」という文字列を入れています。

1 から 4 の乱数を発生させます

 次にこのインデックス番号を無作為に選択することを考えます。端数を丸めて整数値に変える INT 関数、 0 から 1 までの乱数を発生させる RND 関数を用いると、a ~ b のランダム整数は

Int((a - b + 1) * RND + a)

という記述で得られます。ですから

rd = Int(4 * RND + 1)

と書けば 1 から 4 のランダム整数を変数 rd に入れることになります。

配列データを無作為に表示します

 rd には 1 から 4 までの数字が入っているので、

MsgBox ball(rd)

とすれば、「当たり」か「ハズレ」のいずれかを無作為に表示することになります。

 ≫ シートに図形を作成します
 ≫ 数学マクロ講座トップページ

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください