Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11624 / 13646 ツリー ←次へ | 前へ→

【15072】スロットマシーンのような・・・。 派遣社員のレイコ 04/6/14(月) 22:32 質問[未読]
【15073】Re:スロットマシーンのような・・・。 ちゃっぴ 04/6/15(火) 0:21 回答[未読]
【15087】Re:スロットマシーンのような・・・。 Jaka 04/6/15(火) 13:18 発言[未読]
【15111】Re:スロットマシーンのような・・・。 Kobasan 04/6/15(火) 21:55 回答[未読]
【15115】Re:スロットマシーンのような・・・。 bykin 04/6/15(火) 23:09 回答[未読]

【15072】スロットマシーンのような・・・。
質問  派遣社員のレイコ  - 04/6/14(月) 22:32 -

引用なし
パスワード
   はじめまして★賢者の皆様。
今度、会社の行事でくじ引きをするんですが、
その時に抽選結果をスロットマシーンのように
数字が動いて3桁のあたりナンバーを表示する
ようなものを作りたいんです。しかも、動いてる
数字を止める時は、1リールずつストップボタン
で止めたいんです・・・。あと、あたりナンバーは
1〜299までがいいんです。
知恵を貸して頂けるとありがたいです!

【15073】Re:スロットマシーンのような・・・。
回答  ちゃっぴ  - 04/6/15(火) 0:21 -

引用なし
パスワード
   スロットマシンのようにスクロールする処理は難しいので・・・

Rnd関数を使用して3桁の数字をランダムに表示するという
方法ではいかがでしょう?オーソドックスですが・・・

0から9までのランダムな数字は

Int(10 * Rnd)

で表せます。

これを無限ループさせてコマンドボタンを押したときに
フラグをTrueにして終了させるようにすればいいのでは?

'コマンドボタンのクリックフラグ
Public booStopFlg(1 To 3) As Boolean

Sub ShowRndNo()
  Do
    If booStopFlg(1) = False Then
      Range("A1").Value = Int(4 * Rnd)
    End If
    If booStopFlg(2) = False Then
      Range("A2").Value = Int(10 * Rnd)
    End If
    If booStopFlg(3) = False Then
      Range("A3").Value = Int(10 * Rnd)
    End If
  Loop Until booStopFlg(1) And booStopFlg(2) And booStopFlg(3)
End Sub

こんな感じで出来るかと・・・
違ってたら(*_ _)人ゴメンナサイ

【15087】Re:スロットマシーンのような・・・。
発言  Jaka  - 04/6/15(火) 13:18 -

引用なし
パスワード
   こんにちは。

>数字が動いて3桁のあたりナンバーを表示する
>ようなものを作りたいんです。しかも、動いてる
>数字を止める時は、1リールずつストップボタン
>で止めたいんです・・・。あと、あたりナンバーは
>1〜299までがいいんです。
これ読んでみて、なんかパチスロをかなりやり込んでいるような人に感じました。パチスロのプログラム方式をなんとか取り入れようとしているみたいですが、やりたい事とパチスロがごっちゃになっているようにも感じられました。
パチスロのリール制御プログラムなんて、私には考えられませんので、ここのTOPに行って、

リンク集 
 ↓
VBAアクションゲーム?
Excelで動かそう!
 ↓
世留と仙人

をご覧になられる事をお勧めします。
くじ引きだったら、あみだくじで良いような気もしますけど。

ここの
http://www.vector.co.jp/soft/dl/win95/game/se168345.html
KIbingoなんかも、エクセルであみだくじ作るのに、こんな感じに作れば良いって参考になると思いますけど。
因みに、ソースは保護されているので見れません。

【15111】Re:スロットマシーンのような・・・。
回答  Kobasan  - 04/6/15(火) 21:55 -

引用なし
パスワード
   ▼派遣社員のレイコ さん:
>はじめまして★賢者の皆様。
>今度、会社の行事でくじ引きをするんですが、
>その時に抽選結果をスロットマシーンのように
>数字が動いて3桁のあたりナンバーを表示する
>ようなものを作りたいんです。しかも、動いてる
>数字を止める時は、1リールずつストップボタン
>で止めたいんです・・・。あと、あたりナンバーは
>1〜299までがいいんです。
>知恵を貸して頂けるとありがたいです!
'これで一応ルーレットらしく動きます
'次のsubでフォームを表示
'Sub UserForm表示()
'  UserForm1.Show
'End Sub
'ユーザーフォームに4つのボタンを作り、下記VBAをそのフォームに貼り付けてください
Private flag1 As Integer
Private flag2 As Integer
Private flag3 As Integer

'停止ボタン1列目
Private Sub CommandButton1_Click()
  flag1 = 1
End Sub

'停止ボタン2列目
Private Sub CommandButton2_Click()
  flag2 = 1
End Sub

'停止ボタン3列目
Private Sub CommandButton3_Click()
  flag3 = 1
End Sub

'開始ボタン
Private Sub CommandButton4_Click()
  flag1 = 0
  flag2 = 0
  flag3 = 0
  a = 0
  b = 0
  c = 0
  Do While (flag1 + flag2 + flag3 = 3) = False
    DoEvents 'これでButton1のクリックを可能にする
    If flag1 = 0 Then リール a, 1, 3
    If flag2 = 0 Then リール b, 2, 10
    If flag3 = 0 Then リール c, 3, 10
  Loop
  UserForm2.Hide
End Sub

'各列のリールルーチン
Sub リール(j, 列, max)
  Cells(1, 列) = j
  Cells(1, 列).Interior.ColorIndex = j + 5
  '
  k = j + 1
  If k = max Then k = 0
  Cells(2, 列) = k
  Cells(2, 列).Interior.ColorIndex = 36
  '
  m = k + 1
  If m = max Then m = 0
  Cells(3, 列) = m
  Cells(3, 列).Interior.ColorIndex = m + 5
  j = j + 1
  If j = max Then j = 0
End Sub

【15115】Re:スロットマシーンのような・・・。
回答  bykin  - 04/6/15(火) 23:09 -

引用なし
パスワード
   こんばんわ。

おもしろそーやったんで、考えてみました。
で、出来上がってから他のお方の発言よーく見たら・・・
お二人のコードとなんとなく似てる(^^;;
真似したわけやないねんけど(言い訳)

文字をスクロールさせるんはちょっと大仕事なんで、
ちゃっぴはんのと同じように同じ位置で入れ替わるだけにしてます。

とりあえず方法です。

1.新規ブックを作成
2.5行目の幅(=高さ)を70ピクセル(ここは任意)に広げる。
3.B5とC5とD5を選択して・・・
   各セルの周囲に罫線を引く
   フォントサイズを36くらい(これも任意)にする
   文字を中央揃えにする
4.コントロールツールボックスツールバーを表示させてコマンドボタンを
   B7:B9
   C7:C9
   D7:D9
  の3箇所に配置し(CommandButton1〜3)
  Captionを「ストップ」にする
5.もう1個コマンドボタンを任意の位置に配置し(CommandButton4)
  Captionを「スタート」にする
6.当該シートのモジュールに下記コードを書き込む

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Flg(1 To 3) As Boolean

Private Sub CommandButton1_Click()
  Flg(1) = True
End Sub

Private Sub CommandButton2_Click()
  Flg(2) = True
End Sub

Private Sub CommandButton3_Click()
  Flg(3) = True
End Sub

Private Sub CommandButton4_Click()
  Flg(1) = False
  Flg(2) = False
  Flg(3) = False
  Randomize
  Range("B5").Value = Int(Rnd * 3)
  Range("C5").Value = Int(Rnd * 10)
  Range("D5").Value = Int(Rnd * 10)
  DoEvents
  Sleep 100
  Do Until Flg(1) And Flg(2) And Flg(3)
    If Not Flg(1) Then Range("B5").Value = (Range("B5").Value + 1) Mod 3
    If Not Flg(2) Then Range("C5").Value = (Range("C5").Value + 1) Mod 10
    If Not Flg(3) Then Range("D5").Value = (Range("D5").Value + 1) Mod 10
    DoEvents
    Sleep 100
  Loop
End Sub

7.デザインモードの場合は解除する
  (コントロールツールボックスツールバーの三角定規のボタンを押す)

8.「スタート」ボタンを押すと数字が順番に表示され、各「ストップ」ボタンを
  押すとボタンの上の枠内の数字が固定される


但し、当たり番号は0〜299となります。
ボタンのCaptionの変更はデザインモードで当該ボタンを選択した状態で
コントロールツールボックスツールバーの手の形のボタンを押すと表示される
プロパティウィンドウで行ってください。
試してみてな。
ほな。

11624 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free