bingo.zip
このエクセルファイルの作り方
①ビンゴゲームのレイアウトを作成する
・A1:L16 ⇒ ビンゴの数字表示欄
・M2:Q16 ⇒ ビンゴで出た数字の背景色を緑色で表示
・「BINGO」ボタン ⇒ ルーレットを開始して「A1:L16」に数字を表示
・「Initialize」ボタン ⇒ 初期化
※各ボタン配置時に設定するマクロ名はそれぞれ「Bingo」、「Initialize」とする
②Microsoft Visual Basic for Applications」にて以下のコードを記載
Sub Bingo() '結果 Dim result As Integer '(これまでに出た)結果リスト Dim resultList As Variant: resultList = Range("A21:A95") '1~75まで全て出ている場合はなにもしない If (IsEmpty(Range("A95").Value) = False) Then GoTo PROCESSINGEXIT End If 'ボタンを配置したセルを選択する Cells(1, 13).Select 'フォントサイズを設定 Worksheets("BINGO").Range("A2").Font.Size = 350 'ルーレット表示 For i = 1 To 100 Application.Wait [Now()] + 5 / 86400000 result = Int(75 * Rnd + 1) Worksheets("BINGO").Range("A2").Value = result Next '重複制御 Do While (1) result = Int(75 * Rnd + 1) For i = 1 To UBound(resultList) If (resultList(i, 1) = result) Then GoTo BREAK End If Next Exit Do BREAK: Loop Worksheets("BINGO").Range("A2").Value = result '結果書き込み For i = 1 To UBound(resultList) If (IsEmpty(Cells(i + 20, 1).Value) = True) Then Cells(i + 20, 1).Value = result Exit For Else GoTo CONTINUE End If CONTINUE: Next PROCESSINGEXIT: End Sub
Sub Initialize() Range("A21:A95").ClearContents<img src="https://exceldemon.net/wp-content/uploads/2018/11/条件付き書式.png" alt="" width="379" height="396" class="alignnone size-full wp-image-432" /> Worksheets("BINGO").Range("A2").Font.Size = 15 Worksheets("BINGO").Range("A2").Value = "Please press ""BINGO"" button" End Sub
③条件付き書式を設定
※すでに出た数値の背景色を緑色とする
プログラムの解説
'ルーレット表示 For i = 1 To 100 Application.Wait [Now()] + 5 / 86400000 result = Int(75 * Rnd + 1) Worksheets("BINGO").Range("A2").Value = result Next
100回ループさせ、「Application.Wait [Now()] + 5 / 86400000」の記載で5ミリ秒ごと1~75のランダムな数値を表示
'重複制御 Do While (1) result = Int(75 * Rnd + 1) For i = 1 To UBound(resultList) If (resultList(i, 1) = result) Then GoTo BREAK End If Next Exit Do BREAK: Loop Worksheets("BINGO").Range("A2").Value = result
「Do While (1)」で無限ループを発生。
「result = Int(75 * Rnd + 1)」でresultに1~75のランダムな数値を格納する。
「For i = 1 To UBound(resultList)~Next」でresultList分ループし、
resultListにresultの数値がすでに含まれている場合はBREAKして再度1~75のランダムな数値を格納し直す。
含まれていない数値だった場合は「Exit Do」でループを抜けて、「A2」にresultの数値をセット。
'結果書き込み For i = 1 To UBound(resultList) If (IsEmpty(Cells(i + 20, 1).Value) = True) Then Cells(i + 20, 1).Value = result Exit For Else GoTo CONTINUE End If CONTINUE: Next
「For i = 1 To UBound(resultList)~Next」でresultList分ループし、
値が入っていないCellまで来たら今回Resultに格納している数値を書き込む
Sub Initialize() Range("A21:A95").ClearContents Worksheets("BINGO").Range("A2").Font.Size = 15 Worksheets("BINGO").Range("A2").Value = "Please press ""BINGO"" button" End Sub
「Range(“A21:A95”).ClearContents」で背景色が緑色になったところを元に戻す。
初期のフォントサイズと初期値を設定。