[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスを使用した問題を作成』(ichi)
◉テキストボックスを3つ・コマンドボタンを1つを配置した問題文を
作成しています。 しかし、目標とする動作ができず質問させていただきます。 ◉3つのテキストボックスに答えを入力。コマンドボタンで採点。 ●3つのテキストボックスに答えを文字で入力。 ●コマンドボタンをクリックし、3つのテキストボックスに正しい答えが 入力されている場合は「正解」と表示。 ●1つでも間違った答えが入力された場合には「不正解」と表示。 ※テキストボックスに入力される答えの順番は問わない。 例】正解が「りんご」「みかん」「ぶどう」の問題 テキストボックスに「みかん」「ぶどう」「りんご」は正解 テキストボックスに「みかん」「柿」「りんご」は不正解
よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
あと、ご説明では1問の例ですが、回答形式にするなら、1問しかない、なんて事はないですよね? 全体構成に関しての説明が欲しいのと、貴方が作ってうまくいかなかった、と言っているコードを見せてください。それを直すほうが、お互い無駄な時間を使わなくて済むと思います。
(???) 2017/08/17(木) 15:20
If TextBox1.Value = (”みかん”)Or (”ぶどう”)Or(”りんご”) And TextBox2.Value = (”みかん”)Or (”ぶどう”)Or(”りんご”) And _
TextBox2.Value = (”みかん”)Or (”ぶどう”)Or(”りんご”) Then MsgBox (”正解”) Else MsgBox (”不正解”) End If
よろしくお願いします。
(ichi) 2017/08/18(金) 00:20
kaitouTb = Array("みかん", "ぶどう", "りんご")
If IsError(Application.Match(TextBox1.Value, kaitouTb, 0)) Then ans = ans & 0 Else ans = ans & 1 End If If IsError(Application.Match(TextBox2.Value, kaitouTb, 0)) Then ans = ans & 0 Else ans = ans & 1 End If If IsError(Application.Match(TextBox3.Value, kaitouTb, 0)) Then ans = ans & 0 Else ans = ans & 1 End If If ans = 111 Then MsgBox "正解" Else MsgBox "不正解" End If (BJ) 2017/08/18(金) 01:40
BJさんのは、みかんみかんみかん でも正解になるかんじですか? (↑懐かしい曲名みたい) 質問者さんが想定してない回答かも知れませんが、考慮の余地ありかなーと (稲葉) 2017/08/18(金) 06:38
ちょっと時間取れたので・・・ ???さん指摘の、 >いちいち手入力だと、「カキ」とか「かき」とか入力されると、文字列不一致で不正解ですか? 利用者全員、日本語変換に問題はないですか? について、回答無いので完全一致に限定です。 e-ラーニング的なものを想定されているのかなと想像。
Option Explicit Private TBs(2) As MSForms.TextBox '0〜2 Private Sub UserForm_Initialize() Set TBs(0) = TextBox1 Set TBs(1) = TextBox2 Set TBs(2) = TextBox3 End Sub Private Sub CommandButton1_Click() Dim Answer As Collection Set Answer = New Collection With Answer .Add True, "りんご" .Add True, "みかん" .Add True, "ばなな" End With
Dim TBv As Variant Dim ErrNum As Long Dim Result As Boolean For Each TBv In TBs ErrNum = 0 Result = False On Error Resume Next Result = Answer.Item(TBv.Value) ErrNum = Err.Number On Error GoTo 0 If ErrNum > 0 Then Result = False Exit For Else Answer.Remove (TBv.Value) End If Next TBv MsgBox IIf(Result, "正解", "不正解") 'Unload Me End Sub (稲葉) 2017/08/18(金) 08:34
Private Sub CommandButton1_Click() With CreateObject("System.Collections.ArrayList") .Add TextBox1.Text .Add TextBox2.Text .Add TextBox3.Text .Sort If Join(.toarray, "|") = "ぶどう|みかん|りんご" Then MsgBox "正解" Else MsgBox "不正解" End If End With End Sub (???) 2017/08/18(金) 09:20
入力した回答をソートしているのだから、比較する正解もソートしていないといけませんが、"ぶどう|みかん|りんご" ではない文字列に変えたのではないですか? 正解も、あいうえお順に変えてみてください。
(???) 2017/08/18(金) 11:51
既に解決済みですが、初等的方法も上げておきましょう。
Private Sub CommandButton1_Click() If check2 Then MsgBox "正解" Else MsgBox "不正解" End If End Sub
Function check2() As Boolean Dim answers As Variant Dim 正解 As Variant Dim c As Variant ' correct answer
正解 = Array("みかん", "ぶどう", "りんご") answers = Array(Trim(TextBox1.Value), Trim(TextBox2.Value), Trim(TextBox3.Value))
'判定 check2 = True For Each c In 正解 check2 = check2 And Not IsError(Application.Match(c, answers, 0)) Next End Function
なお書き: (1) If TextBox1.Value = (”みかん”)Or (”ぶどう”)Or(”りんご”) といった書き方は文法として不可。 TextBox1.Value = "みかん" Or TextBox1.Value = "ぶどう" Or ・・(略)・・ と書く必要があります。基本的な文法事項ですので、よく理解してください。
(2) 他所の掲示板に second opinion ですか?
https://teratail.com/questions/88766
なぜ他所に聞かないといけなかったのでしょうか。 どんなデータを入れたか示せば、こちらで十分に間に合ったはず。
(3) [[20170815203800]] 『チェックボックスを使用した問題を作成』 と同じ質問者さんでしょ? タイトルのつけかたや、使用OS,Excelバージョンからしても、 同じ課題を解く別人とは思えない。(*) 放置はよくないと思いますよ。
(*)管理者さんは発言者のIPアドレスがわかります。
(γ) 2017/08/19(土) 00:23
未使用の変数があったので削除しました。
本題に戻ると、 3つの回答のどこがまちがっていたかをユーザーに示す必要はないのですかね。 不正解と判定されたときに、併せて正解はこれこれとすれば良いのかも知れないが。
まあ、これが学校から出された課題だとすれば、 そこまで踏み込む必要もないのかもしれないが、 本当にクイズを設計しているなら必要になるかもしれません。
以下余談です。
ついでに、他の掲示板の話で恐縮です。
>[tukuroku]からのコードと同じコードを入力しているのですが・・・。 それをそのまま使うのは、どうかしていませんか? それはソート結果を確認するためのコードです。 テキストボックスの値すら使っていません。 どんな値をテキストに入れても正解となるのは当然です。 他人から提示されたコードは、自分で意味を考えないと。
>変更する部分は、 >If Join(.toarray, "|") = "ぶどう|みかん|リンゴ" Then >の部分だけで良いはずですが、それ以外も変更しましたか? と指摘もされているのに、脇目もふらず一直線ですな。
コードに慣れていないといえばそれまでですし、 他人のコードをよく理解せずに使うと、こうなりがちなのですが、 ちょっと極端な気がします。 自分の頭で前に進める必要があると思います。
ところで、ArrayListもありふれたものではないので、 ホントに理解されているのかちょっと疑問ですね。 ヘルプだって見たこと無いでしょう。 慣れた道具でなんとかしようとしたほうが良いかも知れないですな。
(γ) 2017/08/19(土) 12:43
私が書いたコードの変数名を変えて、あたかも自分で考えたコードであるかのように改変し、質問してますね。これ、違法行為ですよ? ArrayListのオブジェクトを使えるくらいのレベルでこんな簡単な事を質問するはずは無いし、恩を仇で返す、最低な行為です。 しかも、こっちで回答ついて解決しているのに、teratail閉じてないし…。 失礼にも程があります。
(???) 2017/08/21(月) 09:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.