初めての投稿です。
文が拙くて読みにくかったらすみません。
VBAで今ゲームを作っているのですが、やり方が全く分からないので是非教えていただけると嬉しいです。
動きとしては、スタートボタン(btnStart)を押すと問題が問題文(lblQuestion)に表示され、ストップウォッチ(lblTime)が動きます。
4色のボタン(btnRed、btnBlue、btnYellow、btnGreen)のうち、正解のボタンを押すと正誤判定(lblAns)に〇、不正解だと×が表示されます。(表示時間は0.3秒くらい)
4色のボタンで回答したら次の問題文が表示されるようにしたいです。
最後の問題のボタンを押し終わった時にストップウォッチが止まり、同時にメッセージボックスで'"お疲れ様でした、正解数は〇個、かかった時間は〇〇秒です"と表示したいです。
問題文はsheet1のB2~B21、C列に選択肢1、D列に選択肢2、E列に選択肢3、F列に選択肢4、G列に答えが書いてあります。答えは1、2、3、4で書いてあります。
問題の出る順番は都度ランダムで20問出したいです。
複雑なのでわかりにくいと思いますがよろしくお願い致します。
ユーザーフォームはこんな感じです。
No.3ベストアンサー
- 回答日時:
No1です。
>丸々書き方を教えて頂きたいです。
何のために作ろうとしているのかがわかりませんけれど、出来上がったものがあれば良いだけなら、依頼サイトで依頼したほうが確実です。
ご自分の学習が目的で作成するのなら、出来上がったものをもらったところで、なんの学習にもなりません。
前者なら、いろいろあるので検索してみれば宜しいかと。
http://officeboole-vba.fan.coocan.jp/
https://www.lancers.jp/work/search/system/vba
もしも、後者なら、一気に全部を作ろうとせずに、順を追ってつくってゆけば良いかも。
例えば、「ランダム」や「時間制御」はひとまず置いておいて・・
1)スタートボタンを押す毎に、順に問題文が表示される
準備として、問題文を配列等に入れておきます。
(配列でなく、エクセルなどのシート等を利用しても良いでしょう)
項目を示すカウンタ変数を用意しておいて、ボタンを押したらカウンタを進め、その問題文を表示すれば可能です。
(ランダムにする場合は、この項目変数をランダムになるように制御すれば良い)
次に、
2)問題表示中に回答ボタンを押すと、正誤判定が表示される。
問題とペアで回答を用意しておいて、回答ボタンが押されたら、正誤の表示を行います。
次の問題に行くのには、とりあえずスタートボタンでも良いでしょう。
あるいは、回答したらそのまま次の問題文が表示されるのでも良いでしょう。
更には、
3)タイマー機能を追加する。
最初の問題をスタートしたらタイマーが動き、最後の問題に回答したらタイマーが止まるものを作ってみましょう。
段階を進むときには、前のものがある程度は利用できるはずです。
ただし、そのまま利用できるとは限りません。
多少の手直しや、作り直しが必要になる可能性が高いです。
3)までが完成する頃には、かなり慣れてきているでしょうから、ご質問文にあるようなものも作成できるようになっているのではないかと想像します。
もしも、途中でわからないことがあれば、その部分について具体的に質問をなされば、適切な回答を得られるものと思います。
頑張ってください。
No.4
- 回答日時:
#2です
>丸々書き方を教えて頂きたいです。
・・・・#3様が回答されている通りと存じます
ある程度は書いているのではないかと思いましたが、ちがうのかな?
>問題文はsheet1のB2~B21、C列に選択肢1、D列に選択肢2、E列に選択肢3、F列に選択肢4、G列に答えが書いてあります。答えは1、2、3、4で書いてあります。
問題の出る順番は都度ランダムで20問出したいです。
ここだけ・・・
<書いてある>のならセルの値(行)をランダムに入れ替える(行)方法です。
基表の順番を変えた方が他の処理操作が容易になるのではと思いました
一例コードです
UserForm1のロード時に処理します
Private Sub UserForm_Initialize()
Dim i As Long, j As Long
Dim rn As Long, tp As Variant
Dim Rng As Range
Dim tmp, Ary(), rAry()
Set Rng = Worksheets("Sheet1").Range("B2:G21")'ここだけ
tmp = Rng
ReDim Ary(1 To UBound(tmp, 1)), rAry(1 To UBound(tmp, 1), 1 To UBound(tmp, 2))
For i = 1 To UBound(tmp, 1)
For j = 1 To UBound(tmp, 2)
If Ary(i) <> "" Then Ary(i) = Ary(i) & "|" & tmp(i, j) Else Ary(i) = tmp(i, j)
Next
Next
For i = UBound(Ary) To 1 Step -1
rn = Application.Max(Int((i + 1) * Rnd), 1)
tp = Ary(rn): Ary(rn) = Ary(i): Ary(i) = tp
Next
For i = 1 To UBound(Ary, 1)
For j = 1 To UBound(tmp, 2)
rAry(i, j) = Split(Ary(i), "|")(j - 1)
Next
Next
Application.ScreenUpdating = False
Rng(1).Resize(UBound(rAry, 1), UBound(rAry, 2)) = rAry
Application.ScreenUpdating = True
End Sub
コードは参照範囲の変更を考慮していますので範囲変更のみで対象を変更できます
(処理内容:参照範囲の行のみをランダムに入れ替えます)
*文中に | が使用される事が想定できる場合、違うシンボルに変更してください。
No.2
- 回答日時:
こんにちは
>やり方が全く分からない
・・・どこから?
説明がしっかりされていて、ここ迄出来ていてコードは何も書いていない(書けない)の?
コントロールをダブルクリックしてオブジェクト名やイベントを確認しつつ
実行コードを書いて見ましょう。。。
躓いている所はどこですか?コードなども添えて、ご質問、補足してみてはいかがでしょうか
No.1
- 回答日時:
こんにちは
全体像はわかりますが、その上でご質問は何でしょうか?
どの部分がわからないとか何も記載がないので・・
それとも、ご希望に沿うものをまるっと作れということ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c# 文字列の最後から1文字削除...
-
VBAで一時中断したプログラムの...
-
DataGridViewのチェックボック...
-
グリッドビューでのチェックボ...
-
SPREADでカーソルの位置を1行目...
-
コマンドボタンをキーボードで操作
-
javascript 別ウィンドウを開...
-
今更、VBAでRPA、キーボード操...
-
Webブラウザの閉じるボタン無効...
-
Eclipseでクリーンが出来ない
-
ブラウザの×ボタン(閉じるボタ...
-
C# ボタンを押すとyahooのサイ...
-
コネクション・セッション・ト...
-
コンピュータへの接続数が最大...
-
複数選択のListBoxでClickイベ...
-
ASPで画面間のパラメタ受け渡し
-
HTMLについて教えてください。 ...
-
Enterキークリック時の動作につ...
-
submitボタンにvalue属性の値で...
-
HTMLボタンの文字色を変え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで一時中断したプログラムの...
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
Eclipseでクリーンが出来ない
-
VC++ MFC CListCtrlで、ボタン...
-
EXCEL2010でセルが編集中かを判...
-
メール添付されたPDFファイルが...
-
SPREADでカーソルの位置を1行目...
-
VBのこのコードの意味を教えて...
-
【C#】 : WindowsProgramming ...
-
Page_Load時にボタンクリックイ...
-
初期状態に戻す方法
-
Fancyboxのiframe内に閉じるボタン
-
Ctrlキーを押しながらのダブル...
-
グリッドビューでのチェックボ...
-
CheckBoxをボタン形式にして押...
-
Webブラウザの閉じるボタン無効...
-
ブラウザの×ボタン(閉じるボタ...
-
「alt+←」を無効にする方法は?
-
VB.NETでボタンクリックイベン...
おすすめ情報
説明足らずですみません。
自分でも試行錯誤しながら作っていたのですが、そもそもの理解が全くできておらず1人だとできないと判断したので、丸々書き方を教えて頂きたいです。