カーソル位置を取得するには(1)~(4)でリストに載っている単語の長さを取得するプログラムを作成した。
なぜ、このようなことをしたかというと、単語を長い順にソートするためである。リスト上の単語をマス目に並べる際に長い単語から先に並べていった方が効率がよい。
こういうことは、多少プログラム作成をしたことがある方なら経験的にもすぐにわかるであろう。したがって今回はリスト上の単語を降順にソートするプログラムを作ることにする。
よって今回は特に一太郎マクロに特有の知識は何も必要としない。ありきたりのソートのアルゴリズムを使うだけである。
それではプログラムの全体像を始めにお見せしよう。
SetLength For %i = 1 to 20-1 For %j = %i + 1 To 20 If $Length(%i) < $Length(%j) Then %Temp =$MyWord(%i) $MyWord(%i) = $MyWord(%j) $MyWord(%j) = %Temp %TempNum =$Length(%i) $Length(%i) = $Length(%j) $Length(%j) = %TempNum End If Next Next
ジャンプ(.ページ番号=1,.行番号=5,.文字位置=44) For %i = 1 To 20 削除(.回数=12) Insert($MyWord(%i)) DownCell Next
ジャンプ(.ページ番号=1,.行番号=5,.文字位置=69) For %i= 1 to 20 削除(.回数=2) Insert($Length(%i)) DownCell() Next
Sub SetLength ジャンプ(.ページ番号=1,.行番号=5,.文字位置=44)
For %y = 1 to 20 %Str="" For %x = 1 to 12 %S = GetCharacter() If %S= " " Or %S = " " Then Exit For End If 右 %Str = %Str & %S Next $MyWord(%y)=%Str $Length(%y) = Len(%Str) ジャンプ(.ページ番号=1,.行番号=(5+%y),.文字位置=44) Next
ジャンプ(.ページ番号=1,.行番号=5,.文字位置=68) For %i= 1 to 20 削除(.回数=2) Insert($Length(%i)) !!ジャンプ(.ページ番号=1,.行番号=(5+%i),.文字位置=69) DownCell() Next
End Sub
解説は次回にします。まずは
サンプルファイルをダウンロードしてマクロを
動かしてみてください。
WORD_FIND03_1.lzhをダウンロード |
コメント