[PREV] ◆ [マクロをつくろう INDEX] ◆ [NEXT]
マクロで入力用のボックスを表示して、そこに数値や文字列を入力してもらい、その値を受け取って処理する、ということができます。「inputbox」という命令を使います。まずは例を見てください。
1| '連続した数字を入力 2| proc main 3| dim i, startnum, endnum 4| if @hwnd = 0 then exit proc 5| startnum = inputbox("開始する数字を入れてください","最初の数字") 6| endnum = inputbox("終了する数字を入れてください","最後の数字") 7| for i = startnum to endnum 8| @Insert cformat$("%3d. ", i) 9| @CharReturn2 10| next 11| end proc
すでに説明しましたとおり、1行目はコメントとしてマクロの内容を記述、2行目からマクロ本体が始まっています。3行目でこのマクロで使う変数 i, startnum, endnum を宣言しています。(「$ 」がついていないので、何も指定しなければ数値変数です。)
変数 i は後半のループ(繰り返し)で数を1ずつ増やしながらカウントするためのもの、startnum は inputbox で開始する数字を受け取り、この数からループを開始するためのもの、endnum は inputbox で最後になる数字を受け取り、この数になったらループを抜けるためのもの、となっています。
「startnum = inputbox("開始する数字を入れてください","最初の数字")」という1行でこのようなボックスが提示されます。
こういう入力ボックスで数値を入れるときは、半角で入れないと「数値」として認識されず、「OK」ボタンを押してもエラー音が鳴って受けつけません。マクロで入力ボックスを提示する前にあらかじめIMEをオフにする、などの処理をすればエラー防止になりますが、ここでは複雑になるのでエラー処理はしていません。
さて、最初の数字と最後の数字の入力を受け取ったら、実際にファイルに数字を連続して書き込む処理に進みます。ここで、開始する数字と終了する数字のあいだは、1ずつ増やしながらまったく同じ処理の繰り返しになりますので、「for ループ」が使えます。すなわち、開始の数値と終了の数値が決まっていて、そのなかで一定の数で数値を変化させながら繰り返す、という処理です。
それが、「for 〜 next」の部分です。最初の「for 〜」の行で、「開始する数値 to 終わる数値」を定め、ここでは「step」で1回ループするごとに増やす数値を書いてありませんので、デフォルトの「1回に +1」となっています。数字をひとつ飛ばしながら増やす、というのなら、ここに「step 2」とつくわけです。減らすならマイナス数値です。
1回のループで「@Insert cformat$("%3d. ", i)」と「@CharReturn2」という動作をしています。最初の行は cformat$ によって3桁の十進数、そのあとにピリオド、という書式で i を編集中のファイルに書込みます。次の行はオートインデントせずに改行する、という命令です。
ループなので、1つの数字を書き込んだらループの先頭にもどり、数字をひとつ増やしてまた実行します。
わりと簡単ですよね。ぜひ、実際に動作をさせてみてください。マクロファイルではなく、「無題」ファイルを開いて実行することを忘れずに。(上のコードは行番号も入っていて、そのまま貼りつけをしてもマクロになりません。行番号をとりのぞくにはこの部分を「箱形選択」して消去すると便利です。)
[PREV] ◆ [マクロをつくろう INDEX] ◆ [NEXT]