電子書籍の厳選無料作品が豊富!

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

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

A 回答 (3件)

Dim text as Sting


Dim num as Long
num = StrConv(text, vbNarrow)
とすると、
全角の3でも, 半角の3でも
勝手にVisual Basic がLong型に変換してくれますね。
これを、num = Clng(StrConv(text, vbNarrow))
とすると、より良いかも。
Visual Basic では、通常 "3" は 3 に変換しますね。
他の言語では、なかなかこんな風にはいかないようです(VB は超便利です)
    • good
    • 0
この回答へのお礼

すごい関数があるのですね。この関数だと
プログラムも簡潔にできると思います。
VBは奥が深いことがわかったので、
これから少しずつ勉強していきたいと思います。
有り難うございました。

お礼日時:2009/12/01 21:11

TexBoxに入力された値は、たとえ数字を入れたとしても


それは、数値ではなく文字列なので、VALやCINTなどの関数を使って、TextBoxの数字を数値に変換してやらなければいけません。

●TextBoxの数字が全角、半角どちらでも許可する場合

If CInt(txt解答.Value) = Worksheets("データ").Cells(n, 6).Value Then

●TextBoxの数字が、必ず半角の場合は、VALでもいい

If Val(txt解答.Value) = Worksheets("データ").Cells(n, 6).Value Then

以上です。
    • good
    • 0
この回答へのお礼

早速回答を頂き有り難うございました。
3は数字ばかりと思っていました。TextBoxなので文字列なのですね。
教えていただいたとおり、Val関数でくくってやると、"正解"の2文字が出ました。本当に「正解」を教えていただき、有り難うございました。

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

>TextBox6 = Worksheets("データ").Cells(n, 6).Value とすると


フォーム中のTextBox6にはtxt解答欄に入力した正解の“3”が表示されています。

この文章では”txt解答欄”の値が正しいと検証されていませんけど・・・?
セルの回答値を取得出来ているだけですよね?

MsgBox txt解答欄.Value
MsgBox Worksheets("データ").Cells(n, 6).Value
とか、
MsgBox txt解答欄.Value & "/" & Worksheets("データ").Cells(n, 6).Value
などとして、双方の値を表示させて確認してみてはいかがですか?
    • good
    • 0
この回答へのお礼

早速回答を頂き有り難うございました。
3が文字であることがわかりました。フォーム中では、数字の3の
つもりで見ていました。VAL関数で数字にすると、正解が出ました。
うまくいきました。有り難うございました。

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

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