読者です 読者をやめる 読者になる 読者になる

弁護士山本了宣の研究日誌

活動の記録と、日々考えたことなどを書きます。技術的な話が多いかもしれません。研修などでは言いたいことをだいぶ削っていますので、そのぶんの話なども。

行末に自動で貼り付けを行なう秀丸マクロ

 テキスト編集を行なっていると、「今編集している行の最後に貼り付けをしたい」とか、「この10行全部の最後に貼り付けをしたい」という場面に出くわします。年表など、半データベース的なものを書いているときに結構あります。
 「今編集している行の最後」に貼り付けができるだけでも、カーソル移動の手間がずいぶん減ります。10行に貼り付けとなるとなったら、手作業とは段違いです。

 私は秀丸を愛用しているのですが、インターネット上で検索したところ、こういう動作をする秀丸マクロが見当たりませんでした。なので自分の作ったものを公開してみることにします。

//1 選択無し→カーソル行の行末へ貼り付け (論理行)
//2 選択あり→選択範囲の全ての行末へ貼り付け


if(selecting==1) //範囲選択があるとき
{
    //貼り付け範囲のlineno(開始行、終了行、行数)を取得
    #starty=seltopy;
    #goaly=selendy;
    escape; 

    moveto 1,#starty;
    #startline=lineno;
    moveto 1,#goaly;
    #goalline = lineno;

    #count=#goalline-#startline;

    movetolineno 1,#startline;

    //貼り付け実行
    #i=0;
    while ( #i <= #count )
    {
        golineend2;
        paste;
        down;
        #i=#i+1;
    }
    up;
}

else //範囲選択がないとき
{
    golineend2
    paste;
}

 あまりきれいなコードでない気がしますが(行番号はダイレクトに取得できないのか?)お許し下さい。

使い方

1 単にマクロを実行 → その行の行末に貼り付けを実行
2 範囲選択をした状態でマクロを実行 → 選択範囲の行末に貼り付けを実行

 もちろんながら、ショートカットを割り当てると便利になります。

 あと、こんな場面でも便利ですね。

ラベルA
テキストボックスA
ラベルB
テキストボックスB
ラベルC
テキストボックスC

↓


ラベルA.Visible = true
テキストボックスA.Visible = true
ラベルB.Visible = true
テキストボックスB.Visible = true
ラベルC.Visible = true
テキストボックスC.Visible = true

※「.Visible = true」を行末貼り付け。