最近エクセルVBAを勉強し始めた初心者です。
エクセル上でコマンドボタンを押すとF12~H12にそれぞれ0~9の数字を一定時間回転させF12、H12、G12の順(左、右、真ん中の順)に時間差で0~9の乱数を発生させ表示させるには(パチンコのリーチみたいな感じ?)どのようなプログラムを組めばよろしいでしょうか?
数字を回転させ乱数を表示させるプログラムは
For = i = 0 To 100
Range("●●").Value = Int(Rnd * 10)
Next i
です。
よろしくお願いします。
No.1
- 回答日時:
エクセル(表計算ソフト)は、仕事の数字(金額、個数、人数など)を扱うのに適したものと思います。
ゲームや遊興のソフト作成に使うためには、適したもの(メソッドなど)が少なく、却って普通のエクセルVBAの本に解説されている課題より、難しいと思います。時間(差)の問題なども難しい。下手にやると、一瞬に終わって何がなんだか判らなくなったりする。上記のエクセルVBAの普通の解説書にあるエクセルVBAを少し判って、多分エクセルVBAを捨ててから、他のもの(VBなど)でやることになるでしょう。ゲーム的なものは特有の技術(サブプログラムの集積)が要ると思います。
>エクセルVBAを勉強し始めた初心者です。がやるべき課題ではないと思う。
両者で進むべき方向が違う。
それにこの課題は丸投げです。回答者にたよらっず、自分で必要なコード群を1つづ勉強してください。
No.2ベストアンサー
- 回答日時:
また授業ですか?
1日をまた無駄に過ごしたの?
http://okwave.jp/qa5388388.html
前回の回答は理解できなかったようで残念です
前回より簡単な気がします
'サンプル
Sub test()
Dim rng As Range
Dim i As Integer
Dim flg As Integer
'一定時間、数字を回転させる
For i = 1 To 10000
For Each rng In Range("f12:h12")
flg = 0
If rng.Column = 6 And i > 3000 Then flg = 1
If rng.Column = 8 And i > 6000 Then flg = 1
If flg = 0 Then rng.Value = Int(Rnd * 10)
Next rng
Next i
End Sub
人に聞いたら身になりませんよ~
この回答への補足
物はついでに教えて欲しいのですがF12とH12には必ず同じ数字(5,●,5)、(7,●,7)を出現させるにはどうすればよろしいのでしょうか?
補足日時:2009/11/11 01:01いつもお世話になっております。今回もわかりやすいプログラムありがとうございます。回答を見てああ、そういう視点で組むのかと勉強させられる日々でございます。
No.3
- 回答日時:
最近RaiseEventを覚えたので、試みに作ってみました。
それらしい動きをすると思います。当方XL2000ですので、他のバージョンで動かなかったらご容赦下さい。PCの仕様によらず速度が一定(たぶん)で、CPUを100%占有しないところがメリットですかね。(2~4%位でした)☆シートモジュール
シートにコマンドボタン(コントロール)を一個おきます。
Private WithEvents myTimer As myTimerClass
Private Sub CommandButton1_Click()
Randomize (Now)
Set myTimer = New myTimerClass
myTimer.TimerTask (10)
DoEvents
End Sub
Private Sub myTimer_UpdateTime1(ByVal counter As Long)
If counter > 600 Then
Range("A1").Value = Int(Rnd * 10)
End If
End Sub
Private Sub myTimer_UpdateTime2(ByVal counter As Long)
If counter > 300 Then
Range("B1").Value = Int(Rnd * 10)
End If
End Sub
Private Sub myTimer_UpdateTime3(ByVal counter As Long)
If counter > 0 Then
Range("C1").Value = Int(Rnd * 10)
End If
End Sub
☆クラスモジュール myTimerClass
Public Event UpdateTime1(ByVal counter As Long)
Public Event UpdateTime2(ByVal counter As Long)
Public Event UpdateTime3(ByVal counter As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private myCounter As Long
Public Sub TimerTask(ByVal Duration As Long)
Sleep Duration
Select Case (myCounter Mod 3)
Case 0
RaiseEvent UpdateTime1(myCounter)
Case 1
RaiseEvent UpdateTime2(myCounter)
Case 2
RaiseEvent UpdateTime3(myCounter)
End Select
myCounter = myCounter - 1
Loop
End Sub
Private Sub Class_Initialize()
myCounter = 1000
End Sub
No.4
- 回答日時:
>物はついでに教えて欲しいのですが・・・
ついでなので、#2の回答に追加のみ
'サンプル
Sub test()
Dim rng As Range
Dim i As Integer
Dim flg As Integer
'一定時間、数字を回転させる
For i = 1 To 10000
For Each rng In Range("f12:h12")
flg = 0
If rng.Column = 6 And i > 3000 Then flg = 1
If rng.Column = 8 And i > 6000 Then flg = 1
If rng.Column = 6 And i = 3001 Then rng.Value = IIf(rng.Value > 4, 7, 5)
If rng.Column = 8 And i = 6001 Then rng.Value = Cells(12, 6).Value
If flg = 0 Then rng.Value = Int(Rnd * 10)
Next rng
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonを勉強する道のり
-
サーブレットで電卓をつくる
-
WindowsでのOvjective-C開発環境
-
占いサイトを作りたいのですが...
-
C++ですごろくゲーム作成
-
JavaプログラムでYahooの検索結...
-
独学でCやC++を勉強するのに役...
-
VBの勉強方法(WPF)
-
エクセルVBAを動かすノートPC...
-
XMLの勉強方法
-
エクセル VBA の用語一覧について
-
XMLとUMLの相違点?
-
サイト訪問者の情報を取得したい
-
VB.NETについて教えてください
-
Lex,Yaccについて。
-
テンプレートエンジンとフレー...
-
質問です。 Java言語を勉強出来...
-
VBAの「for i=1 to cells(…」...
-
vba クリップボードクリアにつ...
-
Eclipseソース開発画面の行番号...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MSFormsとは何ですか?
-
VBAの「for i=1 to cells(…」...
-
データベースのデータをTextBox...
-
Pythonを勉強する道のり
-
XMLとUMLの相違点?
-
エクセルVBAを動かすノートPC...
-
質問です。 Java言語を勉強出来...
-
Fortranのmakefileについて
-
サイト訪問者の情報を取得したい
-
C#とDelphiの違いについて
-
超恥愚問ですが、CとC++の間に...
-
Excel VBAマクロをマスターする...
-
画像編集ソフトの作り方
-
2ショットチャットができるHP...
-
pythonでの掲示板作成
-
Java Struts メッセージリソー...
-
サーブレットで電卓をつくる
-
C++ですごろくゲーム作成
-
助けでください!!!!!!!...
-
エクセルでガントチャート
おすすめ情報