みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAでこのプログラムの作るには

最近エクセルVBAを勉強し始めた初心者です。

エクセル上でコマンンドボタン1つでD4に1~75の乱数を発生させて次にE4に乱数を発生させる。

D4+E4が120以上なら終了で、そうでなければF4に乱数を発生させてD4+E4+F4が120以上なら終了で、そうでなければG4に乱数を発生させてD4+E4+F4+G4が120以上なら終了で、そうでなければH4に乱数を・・・の繰り返し。(最大、L4まで繰り返す)

表示される数字はD4~L4まで同時ではなく1つずつタイムラグがある感じで表示させたいです。

このプログラムを組みたいのですがどのようにすればよろしいでしょうか?

よろしくお願いします。

投稿日時 - 2009-10-28 22:20:52

QNo.5404576

すぐに回答ほしいです

質問者が選んだベストアンサー

Public Sub f()

Dim i As Integer
Dim t As Integer
Dim r As Integer

Cells.Clear

For i = 1 To 9

r = Int(Rnd() * 75 + 1)

t = t + r

Application.Wait (Now + TimeValue("00:00:01"))

Range("d4").Cells(1, i).Value = r

If t > 120 Then

MsgBox "終了"

Exit Sub

End If


Next

End Sub

こんな感じでどうでしょう。

投稿日時 - 2009-10-29 08:53:03

お礼

回答有難うございます、大変助かりました。

投稿日時 - 2009-10-29 21:37:40

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Sub rndxx()
Dim i As Integer
Dim s As Integer
Randomize
i = 4
Range(Cells(4, 4), Cells(4, 12)).ClearContents
While s <= 120 And i <= 12
  Cells(4, i) = Int(Rnd * 75 + 1)
  s = s + Cells(4, i)
  i = i + 1
Wend
End Sub
横に進むので添え字が使いやすいようrange("D4")では無くcells4,4)という形式にしました。

投稿日時 - 2009-10-29 09:02:16

お礼

回答有難うございます、助かりました。

投稿日時 - 2009-10-29 21:38:27

あなたにオススメの質問