<第6回>

選択肢から単一選択の問題を作る

兵庫県立西宮香風高等学校 松本吉生

ymatsumoto@hyogo-c.ed.jp

 
<<前のページへ
 
 

このページでは、3つの小問に対して、それぞれ選択肢から解答を選ぶ問題を作る。このとき、同じ選択肢を複数の小問に答えとして選べないような仕組みを作る。

もし仮に(1)、(2)、(3)の小問があり、解答の選択肢としてA、B、Cの3つがあるとする。問題と解答が一対一の対応にあれば、全部の小問にAを答えたとき、必ずどれか1問は正解になってしまう。このような「まぐれ当たり」の可能性をなくすためには、選択肢は複数の小問で選べないようにしたほうが良いのだ。

解答フィールドをドロップダウンリストボックスにして、マウスのクリックで解答できるようにする点は、前回の問題と同じだ。複数の小問で同じ選択肢を選んだときの処理も、「動作規則」と「条件の設定」の組み合わせで実現する。だが前回は「次の問題」ボタンに動作規則を設定したが、今回は「ドロップダウンリストボックス」に動作規則を設定するところが違う。

   
データソースの作成
   
 

ではまず、「ビュー作業ウィンドウ」から「問題3」のビューを選択しよう。

   
 
   
 

「問題3」のビューには、すでに問題2へ戻る「前の問題」ボタンと、問題4へすすむ「次の問題」ボタンがある。

作業ウィンドウを「データソース作業ウィンドウ」に切り替え、「化学小テストの解答」フィールドを選択して右クリックし「追加」をクリックする。前回の作業と同じように、「解答3-1」「解答3-2」「解答3-3」のフィールドを追加しよう。フィールド名に数字やアルファベットを使う場合は、半角で入力しなければならないことを忘れないように。

   
 
 
 
   
ドロップダウンリストボックスの作成
   
 

次に解答のフィールドをビューにコントロールとして取り付ける。これまではデータソース作業ウィンドウからフィールドをビューにドラッグし、テキストボックスを作ってからドロップダウンリストボックスに変更したが、ここでは直接ドロップダウンリストボックスを作る操作をしてみよう。

まずデータソース作業ウィンドウから「解答3-1」フィールドを選択する。右クリックするとメニューに「ドロップダウンリストボックス(繰り返し)」という項目があるので、それを選択する。

   
 
 
   
  「解答3-1」のドロップダウンリストボックスを含む繰り返しセクションができた。
   
 
   
問題文の作成
   
  問題文を繰り返しセクションの中に書く。
   
 
   
ドロップダウンリストボックスの追加
   
 

次に「解答3-2」のドロップダウンリストボックスを追加する。データソース作業ウィンドウの「解答3-2」フィールドを選択して右クリックし、「ドロップダウンリストボックス」をクリックする。

   
 
   
 

「解答3-2」のドロップダウンリストボックスができた。

このときできるドロップダウンリストボックスは、カーソルのある位置にできるので、もし繰り返しセクションの外など予想外のところにできてしまったら、繰り返しセクションの中にドラッグして移動するか、もう一度やりなおそう。

   
 
   
 

続けて問題文(2)を書き、さらに同様に「解答3-3」のドロップダウンリストボックスを作って問題を完成させる。

   
 
 
 
 
   
 

問題文と解答フィールドのドロップダウンリストボックスができたら、選択肢を記入する。

   
 
   
ドロップダウンリストボックスの設定
   
 

ドロップダウンリストボックスに選択肢のリストを追加する。まず「解答3-1」のドロップダウンリストボックスを選択し、右クリックして「ドロップダウンリストボックスのプロパティ」をクリックする。

   
 
   
 

ドロップダウンリストボックスのプロパティウィンドウが開いた。「データ」のタブで「リストボックス項目」が「リストボックス項目を手動で入力する」になっていることを確認し、「追加」ボタンをクリックする。

   
 
   
 

選択肢の追加ウィンドウが開いた。まず「A」の選択肢を追加する。

   
 
 
   
 

選択肢「A」が登録された。同様に「B」、「C」の選択肢を追加しよう。

   
 
   
 

選択肢「A」、「B」、「C」がリストボックス項目に追加された。「OK」をクリックしてビューの編集に戻ろう。

   
 
   
動作規則の設定
   
 

次に、他の小問と同じ選択肢を答えられないような仕掛けを作る。この仕掛けは、解答のドロップダウンリストボックスに設定する。

動作規則が実行されるのは、ボタンの場合ならボタンがクリックされたときであり、ドロップダウンリストボックスの場合は、その値が変更されたときである。そこで、ドロップダウンリストボックスに解答を入力したとき、つまりリストボックスをクリックして選択肢の値をクリックしたとき、その選択した値と同じ値が、すでに入力された他の解答欄のフィールドに選択されていたとき、その相手の選択値をクリアする、という動作規則を作るのである。

「解答3-1」のドロップダウンリストボックスのプロパティを開いたままなら、そのまま「動作規則」のボタンをクリックする。もし閉じてしまっていたら、もう一度右クリックから「ドロップダウンリストボックスのプロパティ」をクリックしてプロパティを開き、「動作規則」をクリックする。

   
 
 
   
 

「動作規則」のウィンドウで「追加」ボタンをクリックし、新しい動作規則を作る。

   
 
   
動作規則の名前
   
 

動作規則の動きを考えて、わかりやすい名前を付ける。

このドロップダウンリストボックスでは、2つの動作規則を作る。まず解答フィールドの値が、小問(2)と同じであるときに小問(2)の解答をクリアするというもの、もうひとつは解答フィールドの値が、小問(3)と同じであるときに、小問(3)の解答をクリアするというものである。

まず、小問(2)と同じであったときの動作規則を設定するので、動作規則の名前を「(2)と同じ」にしよう。

   
 
   
 

動作規則の名前を「(2)と同じ」にした。

続いて条件の設定をするため、「条件の設定」ボタンをクリックする。

   
 
   
条件の設定
   
 

「条件」ウィンドウが表示された。

ここで設定する条件は、小問(1)の解答が、小問(2)の解答と等しいとき、という設定である。

最初の項目は、動作規則を設定しようとしている現在対象となっているフィールドがデフォルトで指定されている。また2つめの項目もデフォルトで「次の値に等しい」となっており、いずれもこのままで良い。

   
 
   
 

最後の項目は、判定する対象になる小問(2)のフィールドである。ドロップダウンリストボックスをクリックし、「フィールドまたはグループの選択」を指定しよう。

   
 
   
 

「フィールドまたはグループの選択」ウィンドウでデータソースの一覧が表示されるので、「解答3-2」を選択して「OK」ボタンをクリックする。

   
 
   
  これで、解答3-1の値が解答3-2の値に等しいとき、という条件設定ができた。「OK」ボタンをクリックし、動作の設定に戻ろう。
   
 
   
動作の追加
   
 

「動作規則」のウィンドウで、「条件」のところに設定した条件が表示されているので確認しよう。

そしてこの条件に合致したとき、実行する動作を「動作の追加」ボタンをクリックして設定する。

   
 
   
 

「動作」のウィンドウでは、デフォルトの「ダイアログボックスメッセージを表示する」を「フィールドの値を設定する」に変更する。

   
 
 
   
 

「動作」を「フィールドの値を設定する」に変更すると、対象となる「フィールド」と「値」を設定することができるようになる。まず「フィールド」を設定するため、「フィールド」テキストボックスの右側にあるボタンをクリックする。

   
 
   
 

「フィールドまたはグループの作成」ウィンドウで、値を設定する対象となるフィールドをデータソースから選択できるようになる。

デフォルトでは、動作規則を設定しようとしているフィールドそのもの、つまりここでは「解答3-1」フィールドに動作規則を設定しようとしているので、「解答3-1」が選択されている。

いま、この「解答3-1」フィールドの値に対して、「解答3-2」が同じ値であったとき、つまり同じ解答を「解答3-1」と「解答3-2」の両方で選んだ場合の処理をしようとしている。そしてこのときは「解答3-2」のほうをクリアしたいので、ここで対象となるフィールドは「解答3-2」を指定する。

   
 
 
   
 

動作の対象となるフィールドを「解答3-2」に設定できた。次に「値」のテキストボックスだが、値をクリアしたいときは空欄のままでよく、ここで明示的に「NULL」や「""」などの入力をする必要はない。

「OK」ボタンをクリックしよう。

   
 
   
 

条件と動作が設定できていることが確認できる。「OK」ボタンをクリックしよう。

   
 
   
 

これで「(2)と同じ」の動作規則の設定ができた。次に、この「解答3-1」が「解答3-3」と同じ場合の動作を作成しよう。

「追加」ボタンをクリックして、先と同じように動作規則を作っていく。

   
 
   
 

動作規則の名前は「(3)と同じ」とし、「条件の設定」ボタンをクリックする。

   
 
 
   
 

条件は、「解答3-1」が「次の値に等しい」「解答3-3」とする。

   
 
 
 
 
 
   
 

動作は、「解答3-3」をクリアするようにする。「動作の追加」ボタンをクリックして設定しよう。

   
 
 
 
 
 
 
 
 
   
 

これで「解答3-1」のドロップダウンリストボックスに対する動作規則の設定が完了した。「解答3-1」の解答を変更したとき、その解答が「解答3-2」と同じであれば「解答3-2」をクリアする「(2)と同じ」動作、その解答が「解答3-3」と同じであれば「解答3-3」をクリアする「(3)と同じ」動作の2つである。

「OK」ボタンをクリックして動作規則の設定を終了しよう。

   
 
 
   
 

「解答3-1」に対する動作規則の設定を終えた。

   
 
   
 

次は、これと同様に「解答3-2」と「解答3-3」にも動作規則を設定する。これら3つのドロップダウンリストボックスに、それぞれ2つの動作規則を設定すれば、同じ解答を選んだときに相手の選択内容がクリアされるという動作が実現できる。

   
 
   
未解答をチェックする動作の追加
   
 

「次の問題」ボタンをクリックしたとき、すべての解答が入力されているかどうかをチェックする動作規則をつくる。この問題では、同じ解答を選択したとき、自動的に前の選択がクリアするように動作規則を設定したので、未解答が発生する可能性が高い。その点でも、この動作規則の設定は大切だ。

設定の方法は、前回でやったものと同じである。まず「次の問題」ボタンを選択し、右クリックで「ボタンのプロパティ」を開く。

   
 
   
 

「ボタンのプロパティ」ウィンドウで「動作規則」をクリックする。

   
 
   
 

このボタンには、すでに問題4のビューを開く「問題4へ」という動作規則が設定してある。この動作規則は無条件に問題4のビューを開く動作規則だ。

ここに新しい動作規則を作るため、「追加」のボタンをクリックする。

   
 
   
 

動作規則の名前を「未解答をチェック」にし、「条件の設定」ボタンをクリックする。

   
 
 
   
 

「条件」ウィンドウでは、まず「解答3-1」が「空白である」という条件設定にする。これまでのやり方と同じなので、次の画面キャプチャを見ながら設定してほしい。

   
 
 
 
 
 
 
 
   
 

「解答3-1」が「空白である」という条件設定ができたら、他の解答欄、「解答3-2」「解答3-3」についても、空白であった場合を条件として追加し、それぞれを「OR」に指定する。設定できたら「OK」ボタンをクリックして「動作規則」のウィンドウに戻ろう。

   
 
 
   
  「動作規則」のウィンドウに戻ったら、設定された条件を確認することができる。よければ、この条件に対する動作規則を「動作の追加」ボタンをクリックして設定しよう。
   
 
   
  「動作」ウィンドウでは、「すべての解答を入力してください」というダイアログメッセージを表示する動作を設定する。
   
 
 
   
  これで「条件」と「動作」の設定ができた。この動作は、解答欄のどれかが空白であるときに実行され、そのときは問題4のビューへ進まないようにしたい。そこで「この動作規則が完了したら規則処理を停止する」のチェックボックスにチェックをしておく。
   
 
 
   
  「未解答をチェック」の動作規則は「問題4へ」の動作規則よりも先に適用したい。動作規則は上のものから順に実行されるので、「未解答をチェック」の動作規則を選択し、「上へ移動」ボタンをクリックして順番を変更しよう。
   
 
 
   
  これでボタンに対する動作規則が設定できた。「OK」をクリックしてビューの編集に戻ろう。
   
 
   
ボタンの移動
   
 

ビューの編集に戻った。

ボタンや繰り返しセクションをビューに追加するとき、そのときのカーソル位置にレイアウトされる。このビューでは、最初にボタンを作成し、その後から繰り返しセクションを作ったので、問題文の上にボタンがあるレイアウトになってしまっている。解答者の操作感としては、問題文の下にボタンがあるほうがよいので、ボタンの位置を繰り返しセクションの下に移動しよう。

移動したいボタンを選択し、繰り返しセクションの下へドラッグする。

   
 
 
   
繰り返しセクションのプロパティの変更
   
 

繰り返しセクションは、デフォルトで自由にセクションの挿入、削除をユーザーができるようになっている。ここではそれを禁止したいので、繰り返しセクションのプロパティで変更する。

繰り返しセクションを選択して右クリックし、「繰り返しセクションのプロパティ」をクリックする。

   
 
   
 

「繰り返しセクションのプロパティ」ウィンドウで、「ユーザーによるセクションの挿入と削除を許可する」のチェックを外す。

   
 
 
   
フォームのプレビュー
   
 

「フォームのプレビュー」ボタンをクリックし、動作を確認しよう。

   
 
   
 

「フォームのプレビュー」ボタンをクリックし、動作を確認しよう。例えば問題(1)で選択した解答(A)を、問題(3)でも選択しようとすると、問題(1)の解答がクリアされる。

   
 
 
   
 

そして問題(1)が空欄のままで「次の問題」ボタンをクリックすると、ダイアログメッセージが表示されて解答の未入力を教えてくれる。

   
 
 
   
このページのまとめ
   
 

データソースに解答フィールドを追加し、繰り返しセクションを作成、選択肢を追加する、という流れは前回と同じであるが、前回はまず繰り返しセクションの中にテキストボックスを作り、後でドロップダウンリストボックスに変更するという操作をしたが、この回では、直接ドロップダウンリストボックスを作るやり方をした。

ひとつの問題に3つの小問を作り、3つの選択肢から解答を選ぶようにした。そして同じ解答は1回しか選択できないようにし、同じ選択肢の記号を複数の解答欄に選べないような動作規則を設定した。この設定は各解答欄のドロップダウンリストボックスに動作規則として設定した。また3つの小問のうち、どれか一つでも未回答があれば、注意をうながすダイアログが表示され、次の問題にすすめない処理を設定した。この設定は「次の問題」ボタンの動作規則として設定した。

次回は長文の中に空欄があり、適切な語句を選択肢から選んで答える問題を作る。InfoPathを使えば同じ語句の解答欄が文中に2回以上でてくる場合に、うまく処理できるフォームを簡単に作ることができる。

なお、このページでは、特に断りのない限り、Excel2003とInfoPath2003SP1を使って説明している。Excelの旧バージョンはXMLの対応が完全ではないので、同様の結果が得られないことをあらかじめ断っておく。筆者のメールアドレスはymatsumoto@hyogo-c.ed.jpだ。

       
  mailto:ymatsumoto@hyogo-c.ed.jp :←ここをクリックして筆者にメールを送る
       
 
matsumotoyshio.com 2006/01/19