VBAにてクイズアプリを作ろうとしています。VBA初心者です。
VBAクイズの作り方とは?考え方やチュートリアルも解説!
こちらのサイトを参考にし、
Excelシート上で問題文、解答の選択肢1~4、正解Noを150個ほど作り、
ユーザーフォームにて問題の出題、解答選択肢を選び解答。
正解ならメッセージボックスで正解の文言が出て、不正解時は正解Noを表示するものです。
サイトの通りユーザーフォーム作成とオブジェクト名の指定と進め、
コードもコピペで入力、
(参考では3択の為、4択になるよう一部変えました。)が、
実行してフォームが出ても問題文、解答がシートから反映されません。
調べたのですが直りませんでしたので、わかる方教えてください。
以下コードになります。
VBA
1 2Sub UserForm1_Initialize() 3 '問題一覧シートから、ランダムで値取得 4 Call QuizCreate 5 6End Sub 7 8Sub QuizCreate() 9 '①クイズを指定するため30までのランダム数字を取得 10 Dim quizNo As Integer 'クイズ画面に出すクイズ番号 11 Const quizNum = 150 'クイズの総数 12 quizNo = Int(150 * Rnd + 1) 13 14 '②ランダム数字を使って、クイズ情報を取得 15 Dim intQuestionRow As Integer 16 intQuestionRow = quizNo + 1 '1行目がヘッダのため1プラス 17 18 With Sheet1 19 '問題を取得 20 pubStrQuestion = .Cells(intQuestionRow, 3).Value 21 22 '回答(選択肢)を取得 23 pubStrAnser1 = .Cells(intQuestionRow, 4).Value 24 pubStrAnser2 = .Cells(intQuestionRow, 5).Value 25 pubStrAnser3 = .Cells(intQuestionRow, 6).Value 26 pubStrAnser4 = .Cells(intQuestionRow, 7).Value 27 pubIntAnserNo = .Cells(intQuestionRow, 8).Value 28 End With 29 30 '③ユーザーフォームに初期値設定 31 lblQuestion = pubStrQuestion 32 opbAnser1.Caption = pubStrAnser1 33 opbAnser1.Value = False 34 opbAnser2.Caption = pubStrAnser2 35 opbAnser2.Value = False 36 opbAnser3.Caption = pubStrAnser3 37 opbAnser3.Value = False 38 opbAnser4.Caption = pubStrAnser4 39 opbAnser4.Value = False 40 41End Sub 42 43'クイズアプリに使うグローバル変数 44 Public pubStrQuestion As String '質問 45 Public pubStrAnser1 As String '選択肢1 46 Public pubStrAnser2 As String '選択肢2 47 Public pubStrAnser3 As String '選択肢3 48 Public pubStrAnser4 As String '選択肢4 49 Public pubIntAnserNo As String '正解No 50 51Private Sub btnAnserAction_Click() 52 '①クリックした番号を取得 53 Dim selectOptionNo As Integer 54 If opbAnser1.Value = True Then 55 selectOptionNo = 1 56 ElseIf opbAnser2.Value = True Then 57 selectOptionNo = 2 58 ElseIf opbAnser3.Value = True Then 59 selectOptionNo = 3 60 ElseIf opbAnser4.Value = True Then 61 selectOptionNo = 4 62 Else 63 MsgBox "回答を選択してください。", vbExclamation 64 Exit Sub 65 End If 66 67 '②回答結果に応じて、メッセージ変更 68 If pubIntAnserNo = selectOptionNo Then 69 MsgBox "正解です!おめでとうございますー!" 70 Exit Sub 71 Else 72 MsgBox "不正解です。" & pubIntAnserNo & "番の選択肢が正解です。", vbCritical 73 Exit Sub 74 End If 75 76End Sub 77 78 79Private Sub btnChangeQuestion_Click() 80 Call QuizCreate 81End Sub 82 83
お手数お掛け致しますが、わかる方何卒宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。