アプリ版:「スタンプのみでお礼する」機能のリリースについて

一応、フォーム画面で、ボタンをクリックするとデータシートから
持ってきて、それを問題がなくなるまで繰り返したいのですが、うまく
いきません。
Private Sub cmd次_click()
Dim n As Integer
For n = 3 To Cells(Rows.Count, 1).End(xlUp).Row
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
Next n
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
よろしければ、教えていただけないでしょうか?

A 回答 (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の方でデータ型をあわしてくれるのですが
これが他にコントロールの値の場合は、各コントロールに定められているデータ型でしか出力できない仕様のようです

以上参考まで
    • good
    • 0
この回答へのお礼

なるほど、textboxに入力しているから、文字なのですね。
数字の3を入力したので、数字ばかりと思っていました。
また、textboxも空白や間違った文字の場合もあるので、データシートの方を文字列化するのですか。いや、びっくりです。
わたしの硬くなった頭が、すこし柔らかくなった気がします。
有り難うございました。

お礼日時:2009/11/29 15:30

ボタン等の名前を変更したなら説明をしないと


回答者は分りませんよ

よく分かりませんが、こんなことがしたいのでは?

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

この回答への補足

エクセルで、四者択一問題を作成中です。
前回、回答していただいたお陰で、次々と問題を選択できるようになったのですが、

フォーム中の、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”が表示されています。
どこが、悪いのでしょうか?

補足日時:2009/11/28 17:59
    • good
    • 0
この回答へのお礼

早速、回答していただき有り難うございます。
エクセルVBAの初心者で、テキストを見ながらの試行錯誤
状態だったので、大変助かりました。
頂いた回答内容を手本に、頑張ってみます。

お礼日時:2009/11/24 18:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!