;;anaume: (穴埋め問題 穴と答の作成) ;k.hori 1999/12/24 String S GetSelection(S) CmpStr(S,'=','') JumpIfTrue(ERROR) String B,C integer i,j setint(i,0) setstr(C,'******* 答 *******') ;答の始まりを記す SetStr(B,'(    )') ; この部分を変えると他の括弧に対応できる ;文字列を括弧で置き換える EditCut EnterStr(B) ;括弧をジャンプしながら,括弧の個数を数える call(bracket) ;初めての括弧か確かめる call(kotae) ;最終行に移動,途中に括弧があったら,答え挿入位置を求めてカーソル移動 CurBottom CmpInt(i,'>',0) call(position) ;答えの作成 InsertLine ; EditPaste setint(j,0) For(j,0,i) FindString(B, 0, 0, 0) EndFor Exit ;==================subroutines :bracket ;現在の位置から下の括弧の数を数える FindString(B, 0, 1, 0);下方向検索 inc(i) jumpiftrue(bracket) ;括弧があれば次を捜す ; dec(i) return :kotae ;答えの開始行(******* 答 *******)があるか,なければ作成 FindString(C, 0, 1, 0);下方向検索 jumpiffalse(kotaete) return :kotaete ;答えの開始行(******* 答 *******)挿入 CurBottom CurRightEnd ; CReturn ; CReturn ; PasteStr(C) ; CReturn ; return :position ;答え挿入位置決め RetIffalse setint(j,1) For(j,1,i) CurUp EndFor return :ERROR ShowMessage('範囲が指定されていません',0) exit // 穴埋め問題作成マクロ (クローズ法 v 2) 穴埋めにしたい語句を反転させてこのマクロを起動すると その場所を指定した穴埋めにし,答えを最後に付け加えます。 そのあと穴埋めにした場所に戻ってきます。 穴埋めにしたところが,その場所の後ろにあっても,正しい位置に答えを入れます。(^^ このマクロは ツール→マクロ→マクロのキー割り当て  《変更》をクリックしてキーマクロに登録しておくと便利です。