• 締切済み

VBAで乱数を順に表示したい

エクセルを使って、画面上に0~60の数字を表示させたいのです。 順番は、ばらばらでクリックするたびに、画面に1つずつの数字を表示させたい と思います。 エクセルと書きましたが、パワーポイント等でもかまいません。 どなたかご教授願います。

みんなの回答

回答No.3

ビンゴゲームって0はありましたっけ? ま、それはともかくそういうことならただ乱数を表示すればいいってもんでもないと思います。 1~60がでたらめに出てくる以外に 一度出た数字は2度と出ない という条件も必要でしょう。 というわけで 1~60の60個の数字をでたらめに並べ替え、順に表示する が正解だと思います。 それをビンゴっぽくするなら たとえばExcelなら シートを60枚用意し、 そこにワードアートなどを使って1~60の数字をあらかじめ1つずつ書いておき、 別のシートの1~60の数字をランダムに並べたリストを用意し、 ユーザーフォームにボタンを貼りつけておいて、 それをクリックすると先ほどのリストを順に読んで、該当のシートを表示する ボタンをクリックするたびに、先ほど表示したシートは非表示にし、新しいシートを表示する というアイデアはどうでしょうか? PowerPointならシートがスライドに代わるだけでしょう。 私はPowerPointの方がいろいろと視覚効果も期待できるので賛成ですが 私自身PowerPointのVBAには詳しくないです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

ビンゴゲームにするなら、最初から言っていただいたほうがよいと思います。でも、ご質問も#1の補足内容も何か疑問に残ることがあります。 >画面いっぱいに数字を表示し、マウスをクリックすると >次の番号が出るようにしたいです。 画面一杯と言っても、Excelの場合は、標準的に、一画面で、400セルぐらいありますが、ビンゴゲームで、そんなに並べてもしょうがないと思います。0~60 なら、61セル使うということではないでしょうか。でも、60では、正方形にならないのではないかと思います。64とか、81とか、100とか、縦横列数が同じ数でないといけないはずです。 0~60 というように、数字の個数が奇数ですと、出てこない数字もあるということですね。 'シートモジュールのみ(ダブルクリック・イベント) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Dim rng As Range  Dim ret As Variant  Set rng = Range("A1:F10") '入力範囲  Cancel = True  If Target.Value <> "" Then Exit Sub  If Intersect(Target, rng) Is Nothing Then Exit Sub  Randomize  Do   n = Int(Rnd() * 61) '0~60まで   ret = Application.CountIf(rng, n)   If ret = 0 Then    Target.Value = n    Exit Do   End If  Loop End Sub

回答No.1

こんばんは。 仮にExcelだとして「画面」って何ですか? ダイアログボックス? シートのセル? セルだったら 「=INT(RAND()*61)」とでもどこかのセルに入れておけば とりあえず乱数は表示できます。 ダイアログボックス(メッセージボックス)に表示させたいなら Sub test() MsgBox Int(Rnd * 61) End Sub とでもコーディングしておけば、これを走らせるたびに乱数が表示されます。 「クリックするたびに」もわかりにくいです。 「何を」クリックするのでしょうか。 私もすぐ返事が欲しいです。

fredjuik
質問者

補足

早々にご回答ありがとうございます。 状況説明不足ですみません。 ビンゴゲームの番号表示に使いたいので、 画面いっぱいに数字を表示し、マウスをクリックすると 次の番号が出るようにしたいです。