擬似マインスイーパー
任意の地雷を設置するというプログラムです。
この中で地雷を*に、安全地帯を空白にしたいのですがやり方がわからないので、わかる方お願いします。
Sub mine()
Dim minefield(11, 13) As Integer
Dim i As Integer, a As Integer, b As Integer
Dim c As Integer
c = InputBox("地雷の数を決めます")
Randomize
For i = 1 To c
a = Int(Rnd * 10) + 1
b = Int(Rnd * 12) + 1
If minefield(a, b) = 9 Then i = i - 1
minefield(a, b) = 9
Next i
countMine minefield, 10, 12
showInt minefield, 10, 12
' show minefield, 10, 12
End Sub
Sub countMine(f() As Integer, h As Integer, w As Integer)
Dim i As Integer, j As Integer
Dim a As Integer, b As Integer
Dim x As Integer
For a = 1 To 10
For b = 1 To 12
If f(a, b) < 9 Then
x = 0
If f(a, b - 1) = 9 Then x = x + 1 '左に地雷があるか
If f(a, b + 1) = 9 Then x = x + 1 '右に地雷があるか
' ... この部分に追加したいのだが ...
f(a, b) = x
End If
Next b
Next a
End Sub
Sub showInt(f() As Integer, h As Integer, w As Integer)
Dim i As Integer
Const a As Integer = 7
Const b As Integer = 3
Do While h > 0
For i = 1 To w
Cells(a + h, b + i) = f(h, i)
Next i
h = h - 1
Loop
End Sub
お礼
どうもありがとうございます! おっしゃるとおり、計上年度2と計上月2はレコードフィールド、計上年度1と計上月1はフォームに配置されています。 これだけの説明でお分かりになるとは。。。すごいですね。 (って私の説明不足ですみません。。。) で、おはずかしいですが。。。 "WHERE クエリの条件式"って何を入れたら良いのでしょう・・・? すみません。。。教えてください!!
補足
あ、計上年度と計上月に入力させるのは、請求集計Tのすべてのレコードを対象としてOKです。 ので、その場合はクエリの条件式は必要ないということでしょうか? その解釈でOKなら・・・ strSQL = strSQL & " WHERE クエリの条件式"←ここを注意してください。 の一文を削除して、実行してみたのですが、 RecSet.Edit のところで「メソッドまたはデータメンバが見つかりません」とのエラーが出てしまいます。 すみません。どうしてエラーが出てしまうのかわかりません。 何度も申し訳ありませんが、教えてください!!