Access実践入門 TOPへ
 ■ マイクロソフトアクセス、乱数の発生他
乱数を発生させる

特に新しい処理はありません。
数字を予想する画面での、乱数を発生させるところを見てみます。

ban(5) という配列変数を使っています。
配列にすると、For ループを使って数字を扱いやすくなります。

予想ボタンの「クリック時」です

------------------------------------------
Private Sub 予想_Click()

Dim i As Integer
Dim j As Integer

'予想は1回だけ
If kaisu = 1 Then
Exit Sub
End If



'乱数の初期化
Randomize

'1つ目を決定
If IsNull(Me!番号01) Then
ban(0) = Int((Rnd * 43) + 1)
Else
ban(0) = Me!番号01
End If

'2つ目以降を決定
For i = 1 To 5

RELOOP:
ban(i) = Int((Rnd * 43) + 1)

'決定された数字と同じ番号があればやり直し
For j = 0 To i - 1
If ban(i) = ban(j) Then
GoTo RELOOP:
End If
Next j
Next i

'テキストボックスに表示
Me!番号01 = ban(0)
Me!番号02 = ban(1)
Me!番号03 = ban(2)
Me!番号04 = ban(3)
Me!番号05 = ban(4)
Me!番号06 = ban(5)

kaisu = 1


End Sub

------------------------------------------
ロト6の場合、1〜43の数字を使いますから、
1〜43までの乱数は、
Int((Rnd * 43) + 1) で求められます。

同じ数字があってはいけませんから、
もし同じ数字があれば、やり直すようにしています。

配列変数は、こんな時に便利です。
複雑で解りにくいですが、
慣れてくると、簡単に使えるようになります。

数字を小さい順に転記

数字が決まったら、入力画面に転記するのですが、数字を小さい順に転記した方が解りやすいです。

次のように書いています。

------------------------------------------
For i = 1 To 43
For j = 0 To 5
If ban(j) = i Then
If Form_fo入力6.予想01 = 0 Then
Form_fo入力6.予想01 = ban(j)
Exit For
End If
If Form_fo入力6.予想02 = 0 Then
Form_fo入力6.予想02 = ban(j)
Exit For
End If
If Form_fo入力6.予想03 = 0 Then
Form_fo入力6.予想03 = ban(j)
Exit For
End If
If Form_fo入力6.予想04 = 0 Then
Form_fo入力6.予想04 = ban(j)
Exit For
End If
If Form_fo入力6.予想05 = 0 Then
Form_fo入力6.予想05 = ban(j)
Exit For
End If
If Form_fo入力6.予想06 = 0 Then
Form_fo入力6.予想06 = ban(j)
Exit For
End If
End If
Next j
Next i
------------------------------------------
これも配列変数で処理しています。
1〜43番まで調べて、存在すれば、左から埋めるようにしています。
じっくり見てください。