初めての投稿です。
文が拙くて読みにくかったらすみません。
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で質問しましょう!
似たような質問が見つかりました
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- 英語 問題 : I visit the ( ) with my mom every week. 3 2022/08/15 23:49
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- 英語 以下の英文法の四択問題について質問です。 The Internet service provider 1 2023/02/01 19:50
- 計算機科学 アルゴリズムについて 1 2023/01/01 19:43
- その他(セキュリティ) 特定のWEBページのフリーズ AMAZONサイト PC側? ネットワーク? サイトに問題? 1 2023/01/30 16:23
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで一時中断したプログラムの...
-
DataGridViewのチェックボック...
-
グリッドビューでのチェックボ...
-
c# 文字列の最後から1文字削除...
-
今更、VBAでRPA、キーボード操...
-
CheckBoxをボタン形式にして押...
-
Eclipseでクリーンが出来ない
-
JavaでTABキーヒットを認識する...
-
押す
-
【C#】 : WindowsProgramming ...
-
asp.net メッセージボックス表...
-
最大化ボタンと最小化ボタンを...
-
C# ボタンを押すとyahooのサイ...
-
コマンドボタンをキーボードで操作
-
Webブラウザの閉じるボタン無効...
-
JSPでメッセージボックスを表示...
-
ロストフォーカスイベントとそ...
-
EXCEL2010でセルが編集中かを判...
-
クリック連打ソフト作成
-
C# VBAで言うexit subについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで一時中断したプログラムの...
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
Eclipseでクリーンが出来ない
-
VC++ MFC CListCtrlで、ボタン...
-
メール添付されたPDFファイルが...
-
EXCEL2010でセルが編集中かを判...
-
SPREADでカーソルの位置を1行目...
-
VBのこのコードの意味を教えて...
-
【C#】 : WindowsProgramming ...
-
Page_Load時にボタンクリックイ...
-
初期状態に戻す方法
-
Fancyboxのiframe内に閉じるボタン
-
Ctrlキーを押しながらのダブル...
-
グリッドビューでのチェックボ...
-
CheckBoxをボタン形式にして押...
-
ブラウザの×ボタン(閉じるボタ...
-
Webブラウザの閉じるボタン無効...
-
「alt+←」を無効にする方法は?
-
VB.NETでボタンクリックイベン...
おすすめ情報
説明足らずですみません。
自分でも試行錯誤しながら作っていたのですが、そもそもの理解が全くできておらず1人だとできないと判断したので、丸々書き方を教えて頂きたいです。