表紙 へ

[PREV][マクロをつくろう INDEX][NEXT]

マクロをつくろう (5)

入力させて値を受けとる / 決まった数値まで繰り返し

マクロで入力用のボックスを表示して、そこに数値や文字列を入力してもらい、その値を受け取って処理する、ということができます。「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]