- ベストアンサー
エクセルのマクロでゲームを作成したいのですが
タイトルの通りです office2002ですが visual vasic editorに入力しています。 Sub quiz1() MsgBox "[OK]ボタンを押すと、なぞなぞが始まります" MsgBox "自分が動物だと言っているような飲み物は?" MsgBox "サイダー" MsgBox "話をすることの大好きな道具は?" MsgBox "シャベル" MsgBox "やぶれば、やぶるほど、ほめられるものは?" MsgBox "記録" End Sub と入力しましたが メッセージボックスのタイトル部分が Microsoft Excelとなっていますが 例えば "問題1"とかに変えたいのですが どうすればいいのでしょうか お願いします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
おもしろそうなので、寄せてもらいます。Sheet2に、データをセットして、そこから問題と答えを呼び出します。Sheet2の1列目は、問題番号、2列目は問題、3列目は答えとして、2 行目から、データが入っているとします。 次のコードを、標準モジュールにコピペしてください。 Sub quiz() Dim ans As Variant Dim Question, Answer, H(3) As String Dim i As Integer Dim WS As Object Set WS = Worksheets("Sheet2") H(1) = "ぴんぽ~ん!" H(2) = "当たり!" H(3) = "残念" MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ" i = 1 While WS.Cells(i + 1, 2) <> "" Question = WS.Cells(i + 1, 2).Value Answer = WS.Cells(i + 1, 3).Value ans = InputBox(Question, "問題" & i) If ans = Answer Then MsgBox H(1), , H(2) Else MsgBox Answer & "でした。", vbCritical, H(3) End If i = i + 1 Wend End Sub
その他の回答 (4)
- merlionXX
- ベストアンサー率48% (1930/4007)
No2です。 No4の補足を見ましたが、回答者:pascal3141 さんが書いたように、Sheet2の1列目は、問題番号、2列目は問題、3列目は答えとして、2 行目から、データが入えてありますか? No3の補足をみましたが、ポップアップされるメッセージボックスの大きさは、文字数が増えれば自動的に大きくなりますよ。長い問題を入れてみて下さい。 改行したい場合はこんなふうにしてみてください。 MsgBox "[OK]ボタンを押すと、なぞなぞが始まります。♪♪♪♪" _ + Chr(&HD) + Chr(&HA) + "" _ + Chr(&HD) + Chr(&HA) + "質問の答えを入力欄に書き込んでOKボタンを押してみてください。" _ + Chr(&HD) + Chr(&HA) + "" _ + Chr(&HD) + Chr(&HA) + "では始まりま~す。", , "クイズ"
- moooon
- ベストアンサー率26% (26/98)
面白そうなので参加します。 No2さんのをそのまま拝借して、点数を出すようにしました。 Sub quiz2() Dim ans As Variant Dim p As Integer, x As Single p = 0 MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ" ans = InputBox("自分が動物だと言っているような飲み物は?", "問題1") If ans = "サイダー" Then MsgBox "ぴんぽ~ん!", , "当たり!" p = p + 1 Else MsgBox "サイダーでした。", vbCritical, "残念" End If ans = InputBox("話をすることの大好きな道具は?", "問題2") If ans = "シャベル" Then MsgBox "ぴんぽ~ん!", , "当たり!" p = p + 1 Else MsgBox "シャベルでした。", vbCritical, "残念" End If ans = InputBox("やぶれば、やぶるほど、ほめられるものは?", "問題3") If ans = "記録" Then MsgBox "ぴんぽ~ん!", , "当たり!" p = p + 1 Else MsgBox "記録でした。", vbCritical, "残念" End If x = 100 * p / 3 MsgBox "3問中、" & p & "問正解です。", , x & " POINT" End Sub
補足
おもしろ~い!!ありがとうございます ついででは 申し訳ないのですが 皆さんに お聞きしたいのですが このダイアログボックスの大きさをもっとおおきくできますか?? おねがいします
- merlionXX
- ベストアンサー率48% (1930/4007)
なぞなぞならこんな感じでいかが? 回答を入力する方式にしてみました。 Sub quiz1() MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ" ans = InputBox("自分が動物だと言っているような飲み物は?", "問題1") If ans = "サイダー" Then MsgBox "ぴんぽ~ん!", , "当たり!" Else MsgBox "サイダーでした。", vbCritical, "残念" End If ans = InputBox("話をすることの大好きな道具は?", "問題2") If ans = "シャベル" Then MsgBox "ぴんぽ~ん!", , "当たり!" Else MsgBox "シャベルでした。", vbCritical, "残念" End If ans = InputBox("やぶれば、やぶるほど、ほめられるものは?", "問題3") If ans = "記録" Then MsgBox "ぴんぽ~ん!", , "当たり!" Else MsgBox "記録でした。", vbCritical, "残念" End If End Sub
お礼
うれしい~!!感激です 想像していたとおりの物ができました ありがとうございます
- neKo_deux
- ベストアンサー率44% (5541/12319)
Visual Basic Editorの画面で、ヘルプからMsgBox関数の解説を見ると良いです。 この場合は、 MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "問題1" でOKです。
お礼
わ~!!できました ありがとうございます
補足
早速 やってみましたが残念! ボタンを押すと、なぞなぞが始まります は出たのですが その後がでないのです