• ベストアンサー

エクセルのマクロでゲームを作成したいのですが

タイトルの通りです office2002ですが visual vasic editorに入力しています。 Sub quiz1() MsgBox "[OK]ボタンを押すと、なぞなぞが始まります" MsgBox "自分が動物だと言っているような飲み物は?" MsgBox "サイダー" MsgBox "話をすることの大好きな道具は?" MsgBox "シャベル" MsgBox "やぶれば、やぶるほど、ほめられるものは?" MsgBox "記録" End Sub と入力しましたが メッセージボックスのタイトル部分が Microsoft Excelとなっていますが 例えば "問題1"とかに変えたいのですが  どうすればいいのでしょうか お願いします

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

おもしろそうなので、寄せてもらいます。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

gogogo123
質問者

補足

早速 やってみましたが残念! ボタンを押すと、なぞなぞが始まります は出たのですが その後がでないのです

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

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)
回答No.3

面白そうなので参加します。 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

gogogo123
質問者

補足

おもしろ~い!!ありがとうございます  ついででは 申し訳ないのですが 皆さんに お聞きしたいのですが  このダイアログボックスの大きさをもっとおおきくできますか?? おねがいします  

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

なぞなぞならこんな感じでいかが? 回答を入力する方式にしてみました。 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

gogogo123
質問者

お礼

うれしい~!!感激です 想像していたとおりの物ができました ありがとうございます

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

Visual Basic Editorの画面で、ヘルプからMsgBox関数の解説を見ると良いです。 この場合は、 MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "問題1" でOKです。

gogogo123
質問者

お礼

わ~!!できました ありがとうございます

関連するQ&A

  • No.277098 質問:エクセルでできるでしょうか? の回答マクロを使いたいのですが

    お世話になっています 私も同じ様に A列に同じ日付が在り、これを効率よく削除したいと思っていました 以前、「No.277098 質問:エクセルでできるでしょうか?」での 回答マクロを使わせて頂こうと思い[Visual Basic エディター] に コピー・ペーストして実行したところ コンパイルエラー:End Sub が必要です。  と叱られました マクロ文の最後にはちゃんと End Sub があるのですが どうしてもうまく実行されません [Visual Basic エディター] にコピー・ペーストする詳しい方法と コンパイルエラーの原因を教えて下さい

  • エクセルのマクロを利用して

    マクロ初心者でです。 いろんなサイトから引用させて頂き次のようなマクロを作成しました。 実行すると、日付と担当者氏名(A1)がファイル名となるものです。 そこで教えて頂きたいのですが、実行すると保存先がマイドキュメントに なるのですが、これを例えば「C:\日報」というフォルダが指定されるようにしたいのですが、 自分なりに、いろいろ試したのですが全くできません。 宜しくお願い致します。 Sub 名前をつけて保存() Dim SaveFileName As String, re As Variant With Sheets("sheet1").Range("A1") If .Value = "" Then MsgBox "名前が入力されていません", vbExclamation Exit Sub Else SaveFileName = Format(Now, "yyyymmdd") & "_" & .Value End If End With re = Application.GetSaveAsFilename(SaveFileName) If re = False Then MsgBox "保存を中止しました", vbExclamation Else MsgBox "日報をを保存しました", vbInformation End If End Sub

  • エクセルのマクロで番号を入力する

    エクセルのマクロに取り組んでいます。 まだ初心者なのでわからないことが多いです。 エクセルのバージョンは2010です。 「入力シート」にボタンを作って、ボタンを押すと「1」と入力できる。 ほかの項目を入力し、保存し、「1」を消して、またボタンを押すと 「2」と入力になる。 このように、ボタンを押すと「1」「2」「3」…と入力できるようにしたいのですが、 どのようにマクロを組んだらよいでしょうか? また、自分で以下のように組んで見たところ、「1048576」となってしまい、「1」になりませんでした。 どこを直せばいいのでしょうか? Sub Macro4() ' ' Macro4 Macro ' 受付番号確認&入力 ' Worksheets("入力").Activate '入力シートをアクティブ MsgBox "次の受付番号→ " & Worksheets("データ").Range("A2").End(xlDown).Row Range("B2") = Worksheets("データ").Range("A2").End(xlDown).Row End Sub ご回答よろしくお願いします。

  • エクセルのVBA関数の実行する方法は

    お世話になります イメージを描きやすいように、例を挙げます Function sample()   MsgBox("こんにちわ") End Function と こんな関数をエクセル上で Visual Basic Editorアイコンを押すと VBA画面が開きますから、コードを書くところに 上の3行の関数、sample()、を記入します 左のイミディエイトウィンドウ(環境によるかも知れません) に sample(Enterキー) と入力すると Sub または Function が定義されていません と、エラーが出ます ACCESSのVBAであれば、これで実行できる、とおもいますが エクセルの場合はどうするのでしょうか

  • Word2007のマクロについて

    こんにちは。 Word2007のマクロについて質問させて下さい。 ・タイトル行が(16738047)色で、本文が黒文字の日本語の文書があります。 ・タイトル行内でキーワード検索を行いたいです。 ・1個ずつ内容を確認したいので「次を検索」 MsgBoxを使用しています。 以下のコードを実行すると、単語が1個飛ばしに選択されてしまいます。 どこを変更すればいいでしょうか? 教えてください。よろしくお願いします。 Sub タイトル検索() Dim myKW As String 'キーワード myKW = InputBox("検索する文字を入力して下さい") Selection.HomeKey Unit:=wdStory 'カーソルを文頭に移動 With Selection.Find .ClearFormatting .Font.Color = 16738047 .Text = myKW .MatchWildcards = False .MatchFuzzy = False If Len(myKW) = 0 Then Exit Sub If .Execute = True Then Do While .Execute If MsgBox("次を検索", vbokcansel, "確認") = vbOK Then Selection.Find.Execute End If Loop   MsgBox "処理が終了しました。" Else MsgBox "文字はありませんでした。" End If End With With Selection.Find ' 検索・置換のクリア .ClearFormatting: .Replacement.ClearFormatting .Text = "": .Replacement.Text = "" .MatchWildcards = False: .MatchFuzzy = False End With End Sub

  • エクセル フォーム マクロ

    Private Sub cmd登録_Click() '← 登録ボタン押下時の処理追加 Dim wRow As Long If Me.txtNo = "" Then '顧客番号が未入力の場合はエラー表示 MsgBox "顧客番号を入力してください。", vbExclamation + vbOKOnly, "入力エラー" Exit Sub End If If Me.txt氏名 = "" Then '顧客名が未入力の場合はエラー表示 MsgBox "顧客名を入力してください。", vbExclamation + vbOKOnly, "入力エラー" Exit Sub End If With Worksheets("顧客情報") wRow = .Range("A1").CurrentRegion.Rows.Count + 1 '← 最終行+1 .Cells(wRow, 1) = Me.txtNo 'フォームに入力された各データをシートに送る .Cells(wRow, 2) = Me.txt氏名 .Cells(wRow, 3) = Me.txt生年月日 .Cells(wRow, 4) = Me.txt年齢 .Cells(wRow, 5) = Me.txt性別 .Cells(wRow, 6) = Me.txt郵便番号 .Cells(wRow, 7) = Me.txt住所 .Cells(wRow, 8) = Me.txt電話番号1 .Cells(wRow, 9) = Me.txt電話番号2 .Cells(wRow, 9) = Me.txt携帯番号 End With Unload Me '← フォームを閉じる End Sub これで作成したのですがうまく動かず 助けてほしいです A1:M3までセル結合しそこにボタンをいろいろ配置しました A4にタイトル(No、氏名、生年月日・・・・・)を書きておいときました フォームを作成呼びだし打ったら タイトルのところがすべて置き換わってしまう 再度押すとA4が再度置換される 次の行に移ってくれなくなりました なぜでしょうか? wRow = .Range("A1").CurrentRegion.Rows.Count + 1 '← 最終行+1 この部分かと思いA1→A5に変更してみてもうまくいきません どうすればいいでしょうか?

  • エクセルのマクロで・・・

    初心者のためどうして良いのかわかりません。 教えてください。 設定したい内容は、 ◇ sheet名"入力"にあるボタンキーをクリックすると、非表示のsheet名"出力"を呼び出し印刷する。 ◇ 印刷条件として、sheet"出力"は3枚のページ(範囲A1-Q37,A38-Q74,A75-Q111)があるが、 2ページ目は"D41"、3ページ目は、"D78"がブランクなら印刷しない。 とりあえず、下記コードで印刷だけはできるようにはなったのですが、"出力"が、「visible=false」だとエラーが起きます。 Sub 出力へ() Dim vbyesno As Integer vbyesno = MsgBox("印刷します", _ vbOKCancel, "明細表") If vbyesno = vbOK Then Worksheets("出力").PrintOut Else Worksheets("入力").Select End If End Sub ここからどうアレンジしていけばいいのでしょうか? アドバイスだけでも結構ですので宜しくお願い致します。

  • エクセルマクロ セル内の値の抜き出しと入力の値との

    すみません、ハマっております。 下記マクロにて、A2セル内にある(例)「111-22222-5555-666-1」の中のと入力した5555とのマッチングのマクロを作っているのですが、どうしてもA2値がemptyになってしまいうまくマッチングできません。どうしたらよいでしょうか?お力お貸しください。 Private Sub CommandButton1_Click() Unload 番号入力 Dim OdrNum As String If TextBox1.Value = "" Then Exit Sub Else OdrNum = TextBox1.Value While Mid(A2, 11, 4) <> OdrNum '該当番号の欄になるまで不要行削除 If Mid(A2, 11, 4) = "" Then MsgBox "該当番号はありませんでした。" Exit Sub Else End If Rows("2:2").Select Selection.Delete Shift:=xlUp Wend MsgBox "処理終了" End If End Sub

  • エクセル マクロ 教えてください。

    sheet1に (a1=No. b1=月日 C1=項目 d1=収入 e1=支出 f1=摘要 G1=店名)項目を作りそれらをユーザーフォームを作り入力したいです。 この記述では上手く動けません。教えてください。 Private Sub CommandButton1_Click() Dim r As Long, 最終行 As Long, 項目行 As Long Dim re As String r = textboxs1.Value + 10 最終行 = Worksheets("入力").Range("B65536").End(xlUp).Row If r <= 最終行 Then re = MsgBox("訂正" & " " & "すでにデータが入力されています。" & Chr(13) & _ Chr(13) & "データを置き換えます。 本当に良いですか? ", _ Buttons:=vbYesNo + vbExclamation, Title:="注意!!") If re = vbYes Then With Worksheets("入力") .Cells(r, 2).Activate .Cells(r, 1).Value = TBox1.Value .Cells(r, 2).Value = TBox2.Value .Cells(r, 3).Value = ComboBox1.Value .Cells(r, 4).Value = TBox3.Value .Cells(r, 5).Value = TBox4.Value .Cells(r, 6).Value = TBox5.Value .Cells(r, 7).Value = ComboBox2.Value End With データクリア Exit Sub End If データクリア Exit Sub End If If r >= 最終行 + 1 Then r = 最終行 + 1 End If With Worksheets("入力") .Cells(r, 1).Value = TBox1.Value .Cells(r, 2).Value = TBox2.Value .Cells(r, 3).Value = ComboBox1.Value .Cells(r, 4).Value = TBox3.Value .Cells(r, 5).Value = TBox4.Value .Cells(r, 6).Value = TBox5.Value .Cells(r, 7).Value = CBomboox2.Value End With データクリア End Sub r = データNo + 10 With Worksheets("入力") .Activate .Cells(r, 2).Select TBox1.Value = .Cells(r, 1).Value TBox2.Value = .Cells(r, 2).Value ComboBox1.Value = .Cells(r, 3).Value TBox3.Value = Format(.Cells(r, 4).Value, "###,###") TBox4.Value = Format(.Cells(r, 5).Value, "###,###") TBox5.Value = .Cells(r, 6).Value ComboBox2.Value = .Cells(r, 7).Value End With Exit Sub End If If データNo > 最終行 - 10 Then データNo = 最終行 - 9 TBoxNo.Value = データNo データクリア End If End Sub

  • エクセルのInputBoxについて教えてください。

    エクセル2010です。 InputBoxについて教えてください。  負数以外の数値を受け取りたいのです。 以下のようにやってみました。 Sub test001() Dim ans As Double ans = Application.InputBox("数値を入力", Type:=1) If ans = False Then MsgBox "キャンセル" Exit Sub ElseIf ans < 0 Then MsgBox "負数は不可。" Call test Else MsgBox ans & "を受け取りました。" End If End Sub 一応、これで動くのですが、問題は数値0を入力された場合です。 0はFalseと認識されるようで、キャンセルとなってしまいます。0は0という数値で受け取りたいのです。 試行錯誤の結果、Type:=1をやめ、変数ansをVariantにして If ans = “False” Then と、Falseをダブルクォーテーションでくくると、0を数値としてくれるようです。でも理屈がわかりません。変数ansにキャンセルボタンで帰ってくるのはBooleanのFalseであり、Stringの”False”ではないと思うのですが。 Sub test002() Dim ans ans = Application.InputBox("数値を入力") If ans = "False" Then MsgBox "キャンセル" & TypeName(ans) Exit Sub ElseIf ans = "" Then MsgBox "未入力" & TypeName(ans) Call test002 ElseIf Not IsNumeric(ans) Then MsgBox "数値ではありません。" & TypeName(ans) Call test002 ElseIf ans < 0 Then MsgBox "負数は不可。" & TypeName(ans) Call test002 Else MsgBox ans & "を受け取りました。" & TypeName(ans) End If End Sub あと、もうひとつ質問は、数値以外の入力があった場合、再度入力させるためいちいちCall test002 を入れてますが、このやり方でただしいのでしょうか?

専門家に質問してみよう