戻る HOME

Word で並び替え 〜 整序問題の選択肢の作成〜


 英語のテストで、単語を並び替えて正しい英文を完成させる「整序問題」を出題することがよくあります。その場合、完成後の英文を選択肢に分解しなければなりませんが、これが結構面倒です。漏れがないかが気になって、何度も見直すことになるからです。
 Word の「並び替え」の機能を使うと、アルファベット順に選択肢を並べるのであれば比較的楽に作成できます。方法は簡単です。以下のようにやってみてください。

  1. 区切りたい部分で改行(Word 的には改段落)しながら入力する。
    または、完成された文が入力済みであれば、区切りたい部分で改行(改段落)する。
    (選択肢の数と同じ数の行数(段落数)になるはずです)
  2. 入力した複数の行(段落)を全て選択する。
  3. メニューの「罫線」−「並び替え」で表示される下図のダイアログボックスで「OK」ボタンを押す。
    並べ替え

 これで、選択肢がアルファベット順に並び変わります。あとは、段落記号の削除と選択肢番号や区切りマークなどの入力で完成です。
 「並び替え」の意外な使い方だと思いますが、教師向きのテクニックではないでしょうか。英語でなくてももちろん並び替わります。JIS コード順です。

 この「並び替え」を VBA で実現するには、ただ1行 Selection.Sort と記述するだけです。しかし、どうせなら選択肢番号を付加して、さらに1行にしてしまった方がいいので、そのような VBA マクロを作ってみました。行ごとに入力した後で全ての行を選択してから実行すると、整序問題の選択肢が完成します。このページの最後に記載しておきますので、コピーしてお使いください。

 このマクロの登録の仕方を説明します。
 このページから下の VBA コードをコピーした後、Word で VisualBasicEditor を起動(Alt + F11)して、メニューの「挿入」−「標準モジュール」で挿入される標準モジュールに貼り付けてください。
 ある特定のドキュメントの標準モジュールであれば、そのドキュメントでのみ有効となり、Normal.dot(ユーザー設定と汎用マクロが保存されている標準テンプレート)の標準モジュールであれば、新規作成される全てのドキュメントで利用可能になります。
 VisualBasicEditor での操作については、Excel VBA に関連して取り上げた「名簿用の罫線マクロ(1/2)」も参考にしてください。

 Normal.dot は、通常次の位置にあるはずです。
   Word 97/98 の場合: C:\Program Files\Microsoft Office\Template\Normal.dot
   Word 2000 の場合: C:\Windows\Application Data\Microsoft\Templates\Normal.dot


 このマクロはショートカットキーに割り付けるのが便利だと思います。割り付け方については、「Word のショートカットキーのカスタマイズ」のページを参考にしてください。



'--------- ここから VBA マクロ ----------

'
'■■■ 整序問題選択肢作成用並び替えマクロ ■■■
'

Sub MySort()

  Dim MyPara As Integer
  Dim n As Integer

'画面表示の更新を禁止
  Application.ScreenUpdating = False

  With Selection
'段落数を数えて変数に代入
    MyPara = .Paragraphs.Count
'複数の段落が選択されなかった場合のエラーメッセージ
    If MyPara < 2 Then
      MsgBox "複数の行を選択してください。", vbOKOnly + vbExclamation
      Exit Sub
    End If
'ソート
    .Sort
'選択解除
    .Collapse
'選択肢番号の付加と折りたたみ
    .TypeText Text:="1. "
    For n = 1 To MyPara - 1
      .EndKey unit:=wdLine
      .TypeText Text:=" / " & n + 1 & ". "
      .Delete unit:=wdCharacter, Count:=1
    Next n
'先頭へカーソルを移動
    .HomeKey unit:=wdLine
  End With

'画面表示の更新を許可
  Application.ScreenUpdating = True
'ビープ音
  Beep
End Sub



戻る