1 コイン投げ
【学習課題】D2にコインを投げる回数を入力すると、表と裏の出た回数と割合がC5:D6に表示されるマクロを作成しましょう。
-
解決手順(日本語)
マクロ「コイン投げ」を開始します。
カウント, コイン, 判定, 表, 裏の5つの変数を
準備します。
乱数列を初期化します。
変数(”表”)に0を代入します。
変数(”裏”)に0を代入します。
セルD2の値を変数(”コイン”)に代入します。
カウントの値が1から変数(” コイン”)の値まで
1乱数を2倍して1足した値の整数部を
変数(”判定”)に代入します。
もし、判定が1ならば
表に1加えた値を表に代入します。
このこと以外のときは
裏に1加えた値を裏に代入します。
条件処理を終了します。
カウントに1を加えて戻ります。
セルC5に表の値を代入します。
セルC6に裏の値を代入します。
セルD5に表 / (表 + 裏)の値を代入します。
セルD6に裏 / (表 + 裏)の値を代入します。
マクロ「コイン投げ」を終了します。 -
コード化(マクロ)
Sub コイン投げ()
Dim カウント, コイン, 判定, 表, 裏 As Integer
Randomize
表 = 0
裏 = 0
コイン = Range("D2")
For カウント = 1 To コイン
判定 = Int(Rnd() * 2 + 1)
If 判定 = 1 Then
表 = 表 + 1
Else
裏 = 裏 + 1
End If
Next カウント
Range("C5") = 表
Range("C6") = 裏
Range("D5") = 表 / (表 + 裏)
Range("D6") = 裏 / (表 + 裏)
End Sub
2 サイコロ投げ サイコロ投げ.xlms
【学習課題】乱数を使ってセルB3にサイコロの目を表示するプログラムを作成しましょう。
-
解決手順(日本語)
マクロ「サイコロの目」を開始します。
変化という変数を準備します。
時間という変数を準備します。
以下の式について、変化の値を1から10まで
繰り返します。
処理開始前時間を変数(”時間”)に代入します。
1乱数の6倍に1足した数の整数値をセルB3に
代入します。
処置開始後の時間から処理開始前時間を引いた
時間が0.2より小さくなるまで繰り返す。
変化に1加えて戻ります。
マクロ「サイコロの目」を終了します。 -
コード化(マクロ)
Sub サイコロの目()
Dim 変化 As Single
Dim 時間 As Variant
For 変化 = 1 To 10
t = Timer
Range(“B3”) = Int(Rnd() * 6) + 1
Do While (Timer() – 時間) < 0.2
Loop
Next 変化
End Sub
3 桂馬の動き 桂馬の動き.xlms
【学習課題】桂の位置を示して、そこからの桂の行ける場所を示すプログラムを作成しましょう。
-
解決手順(日本語)
縦,横の2つの変数を準備します。
マクロ「桂の位置」を開始します。
セルB2からJ10まで値を空にします。
1乱数かける9足す2の値の整数値を縦に
代入します。
1乱数かける9足す2の値の整数値を横に
代入します。
セル(縦,横)に桂のもじを代入します。
マクロ「桂の位置」を終了します。
マクロ「桂の次の位置」を開始します。
もし、(縦 - 2 > 1) かつ (横 + 1 < 11) かつ
(横 - 1 > 2)のとき
セル(縦 - 2, 横 + 1)に文字“桂”を代入します。
セル(縦 - 2, 横 - 1)に文字“桂”を代入します。
上記以外で、(縦 - 2 > 1) かつ (横 + 1 < 11)
のとき
セル(縦 - 2, 横 + 1)に文字“桂”を代入します。
上記以外で、(縦 - 2 > 1) かつ (横 - 1 < 2)
のとき
セル(縦 - 2, 横 - 1)に文字“桂”を代入します。
上記外のときは
文字“これ以上、動けません”を表示します。
条件処理を終了します。
マクロ「桂の次の位置」を終了します。 -
コード化(マクロ)
Dim 縦, 横 As Integer
Sub 桂の位置()
Range("B2:J10") = ""
縦 = Int(Rnd() * 9 + 2)
横 = Int(Rnd() * 9 + 2)
Cells(縦, 横) = "桂"
End Sub
Sub 桂の次の位置()
If (縦 - 2 > 1) And (横 + 1 < 11) And
(横 - 1 > 2) Then
Cells(縦 - 2, 横 + 1) = "桂"
Cells(縦 - 2, 横 - 1) = "桂"
ElseIf (縦 - 2 > 1) And (横 + 1 < 11) Then
Cells(縦 - 2, 横 + 1) = "桂"
ElseIf (縦 - 2 > 1) And (横 - 1 > 2) Then
Cells(縦 - 2, 横 - 1) = "桂"
Else
MsgBox "これ以上、動けません"
End If
End Sub
【学習課題】指定時間後に終了をしらせるタイマーのプログラムをつくりましょう。
-
解決手順(日本語)
マクロ「スロットマシーン」を始めます
D1, D2, D3, Xの4つの変数を準備します
1乱数×8に1足した整数値を変数D1に代入します
1乱数×8に1足した整数値を変数D2に代入します
1乱数×8に1足した整数値を変数D3に代入します
Xの値を1から100になるまで繰り返します
0.1秒の待ち時間を入れます
D1に1加えた数をD1に代入します
D1の値をセルB2に代入します
もしD1が9より大きいならばD1の値を0にします
D2に1加えた数をD2に代入します
D2の値をセルC2に代入します
もしD2が9より大きいならばD2の値を0にします
D3に1加えた数をD3に代入します。
D3の値をセルD2に代入します。
もしD3が9より大きいならばD3の値を0にします
Xに1加えて戻ります
マクロ「スロットマシーン」を終わります -
コード化(マクロ)
Sub スロットマシーン()
Dim D1, D2, D3, X As Integer
D1 = Int(Rnd() * 8 + 1)
D2 = Int(Rnd() * 8 + 1)
D3 = Int(Rnd() * 8 + 1)
For X = 1 To 100
Application.Wait [Now() + "00:00:00.1"]
D1 = D1 + 1
Range("A1").Value = D1
If D1 > 9 Then D1 = 0
D2 = D2 + 1
Range("B1").Value = D2
If D2 > 9 Then D2 = 0
D3 = D3 + 1
Range("C1").Value = D3
If D3 > 9 Then D3 = 0
Next X
End Sub