見出し画像

VBAでBingo5_1

なぜ「Bingo5」を例に挙げたのか?

「Bingo5当選№をゲットして、一儲けしよう」というものではありません。
「VBA入り口」の説明として、Bingo5の仕組みがピッタリだからです。
「プログラムをつくる」とは、「ある規則を算式で表現すること」です。
Bingo5の規則は、ただ「8個の升にそれぞれの選択肢から数値をひとつずつ選び出す」だけです。

各升の選択肢

なので、Excelさんにそれぞれの値を無作為に選ぶように指示すれば良いのです。
無作為に選ぶ機能を「乱数:Randamize」と呼びます。
説明だけ見ていると、嫌いになりそうなので少し手を動かしてみましょう。


VBA用のBookをつくる

VBAを含むExcelは、一般的なものと少し違いがあるので、先ず初めにExcelのおおもとを作ります。
Excelを起動すると、新しいブック(Book-Excel)が表示されます。
ツールバーの「ファイル」をクリックしてさらに「名前をつけて保存」をクリックすると下表が表示されます。
ファイル名(N):に「練習1」を入力する。

ファイル名入力

ここからが肝心です。
ファイルの種類(T):の右にあるvマークをクリックする。
表示された選択肢から「Excel マクロ有効ブック(*.xlsm)」を選択して保存をクリックする。

ファイルの種類を選択

これでVBA用(マクロを含む)Bookができました。

VBA入力をはじめる

それでは、ツールバーの「開発」をクリックしてください。
(「開発」がない場合は「出会い」を参照)
続けて「マクロ」ボタンをクリックして表示されるダイアログボックスのマクロ名(M):にaa(適当)を入力して「作成」ボタンをクリックするとVBAを入れる箱(エディター)が画面一杯に開きます。
使わない部分を閉じて(赤丸をクリック)、エディターの外枠を調整しながら小さくして、シートが見えるようにしてください。

開発>マクロ
aaを入力後作成をクリック
VBAを記述する箱(エディター):赤丸(✕)をクリック
エディターを小さくしてシートが見えるようにする

Sub aa()~End Subの間(上図の赤枠部分)を次の文字列にすべて置換えてください。(コピペ可)
Sub 乱数() '乱数によりそれぞれの升の選択肢をセットする
  Sheets("Sheet1").Select
  Cells(2, "B") = Application.RandBetween(1, 5)
  Cells(2, "C") = Application.RandBetween(6, 10)
  Cells(2, "D") = Application.RandBetween(11, 15)
  Cells(2, "E") = Application.RandBetween(16, 20)
  Cells(2, "F") = Application.RandBetween(21, 25)
  Cells(2, "G") = Application.RandBetween(26, 30)
  Cells(2, "H") = Application.RandBetween(31, 35)
  Cells(2, "I") = Application.RandBetween(36, 40)
End Sub

入力完了後✕をクリック

上図のようにできたらOKです。
✕をクリックして、一旦エディターを閉じます。
早速動かしたいところですが、ここで上書き保存します。
VBAを作成したり、変更を加えたりした場合は「上書き保存」の癖をつけておきましょう。
理由は後々・・・
それでは、いよいよ動かしてみましょう。
再度「開発」>「マクロ」と進めていってダイアログボックスを表示してください。
マクロ名(M):に「乱数」を選択して「実行」をクリックすると、結果が表示されます。

開発>乱数>実行
実行結果の例

おそらく、この画面とは違う結果が出ていると思いますが、規則どおりそれぞれの升の選択肢から選ばれた結果がでているはずです。これが「無作為(ランダム)に選びなさい。」と指示した結果です。さらに、この操作(実行)を何度か繰り返すと、結果の違い(ランダムに選択されている)が理解できると思います。
Excelでは、升のことをCell(セル)と呼びます。たとえばCells(2,"B")は2行目B列のセルを指します。
そして「=」は「左辺と右辺が等しい」ということではなく「右辺を左辺に代入する」ということなのです。(「代入するがポイント
まとめると「2行目B列のセルに1から5の中から無作為に選んだひとつの値を代入しなさい」
「2行目C列のセルに6から10の中から無作為に選んだひとつの値を代入しなさい」という指示になります。
それでは、ここで一旦立ち止まって、規則に合う組み合わせが一体いくつあるのか、考えてみましょう。
8個それぞれの升に選択肢が5個あるので、5の8乗で390,625の組み合わせが存在します。つまり

最小値と最大値

この間に390,625の組み合わせがあるということです。
それでは、すべての組み合わせを手入力してみましょう。先ず右の36を1ずつ増やして37、38、39、40、次に31を32にして、36、37、・・・とやっていけば、根気強い人ならいつかは完成するでしょう。
私には、そんな根性はないので、VBAでプログラムを書いてExcelさんに依頼します。
では、あなたも考えてみてください。
わずか30行ほどのプログラムを書いて、処理時間2~3分(パソコンの性能にもよる)もあると、390,625行ものデータを書出せるはずです。
すべての組み合わせ」に、なにかしらの処理を繰り返す「For to ~ Next」のプログラムと説明を記載しています。
今回はここまでとしますが、次回「Bingo5_2」では、もう少し掘り下げてみようと思っています。

すべての組み合わせ

ここから先は

1,569字

¥ 200

この記事が気に入ったらサポートをしてみませんか?