- ベストアンサー
Excelで四者択一の問題を作成する方法
- エクセルを使用して、フォーム画面のボタンをクリックすると問題が表示され、解答と採点ができる四者択一の問題を作成したいです。
- データシートから問題を取得し、問題がなくなるまで繰り返し表示する方法を試しましたが、うまくいきません。
- 質問文章のコードを使用して、問題をセットアップし、解答の判定と問題の消去も行えるようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>フォーム中の、txt解答欄に1~4の数字を入力し・・・・・ >If txt解答.Value = Worksheets("データ").Cells(n, 6).Value Then If txt解答.Value = cstr(Worksheets("データ").Cells(n, 6).Value) Then textboxの値は数字を入力しても文字扱いになります(だからtextboxなのですよね) 多分、セルの値は数値扱いなのだと思います 同じ値が「1」でも文字と数値では比較が出来ないため、間違いとなってしまうのだと思います そこで、どちらかにあわせる必要があります textboxの値を数値化するのは空白の場合や間違って文字を入力された場合に エラーが出るので、セルの値の方を文字列化します 余談: セルに入力した値の場合はexcelの方でデータ型をあわしてくれるのですが これが他にコントロールの値の場合は、各コントロールに定められているデータ型でしか出力できない仕様のようです 以上参考まで
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
ボタン等の名前を変更したなら説明をしないと 回答者は分りませんよ よく分かりませんが、こんなことがしたいのでは? Dim n As Integer Private Sub UserForm_Initialize() n = 3 End Sub Private Sub cmd次_click() If Worksheets("データ").Cells(n, 1).Value = "" Then Exit Sub txt設問.Value = Worksheets("データ").Cells(n, 1).Value txt問1.Value = Worksheets("データ").Cells(n, 2).Value txt問2.Value = Worksheets("データ").Cells(n, 3).Value txt問3.Value = Worksheets("データ").Cells(n, 4).Value txt問4.Value = Worksheets("データ").Cells(n, 5).Value n = n + 1 End Sub Private Sub cmd判定_click() If op3.Value = True Then txt正解.Value = "○" Else txt正解.Value = "×" End If End Sub Private Sub cmd消去_Click() txt設問.Value = "" txt問1.Value = "" txt問2.Value = "" txt問3.Value = "" txt問4.Value = "" txt正解.Value = "" op1.Value = "" op2.Value = "" op3.Value = "" op4.Value = "" End Sub
お礼
早速、回答していただき有り難うございます。 エクセルVBAの初心者で、テキストを見ながらの試行錯誤 状態だったので、大変助かりました。 頂いた回答内容を手本に、頑張ってみます。
補足
エクセルで、四者択一問題を作成中です。 前回、回答していただいたお陰で、次々と問題を選択できるようになったのですが、 フォーム中の、txt解答欄に1~4の数字を入力し、cmd判定ボタンをクリックすると、データシートのN行目の6列目にある解答欄の数字と比べて、txt判定欄に正解か間違いを表示しようと考えているのですが、 If txt解答.Value = Worksheets("データ").Cells(n, 6).Value Then txt判定.Value = "正 解" Else txt判定.Value = "間違い" End If 間違いばかりが表示されて、正解が表示されません。 ちなみに、 TextBox6 = Worksheets("データ").Cells(n, 6).Value とすると フォーム中のTextBox6にはtxt解答欄に入力した正解の“3”が表示されています。 どこが、悪いのでしょうか?
お礼
なるほど、textboxに入力しているから、文字なのですね。 数字の3を入力したので、数字ばかりと思っていました。 また、textboxも空白や間違った文字の場合もあるので、データシートの方を文字列化するのですか。いや、びっくりです。 わたしの硬くなった頭が、すこし柔らかくなった気がします。 有り難うございました。