トータル : counter | 今日 : counter | 昨日 : counter

ホームに戻る | 自作秀丸マクロ 自作Excelマクロ

自作した秀丸マクロを紹介します。基本的には作ってみたいとか、必要があると思ったときに作るので数は多くないですが。

カーソル上の数値か、数値の入力で強調コードの意味を表示するマクロです。(Ver.5.xxには未対応)

//// 数値から強調定義の意味を表示する Yasuhisa,2004 ////

$youto1[0x01] = "強調1";                       //   1 ; 0000 0001
$youto1[0x41] = "強調2";                       //  65 ; 0100 0001
$youto1[0x81] = "強調3";                       // 129 ; 1000 0001
$youto1[0xC1] = "強調4";                       // 193 ; 1100 0001
$youto1[0x05] = "特に強調1";                   //   5 ; 0000 0101
$youto1[0x45] = "特に強調2";                   //  69 ; 0100 0101
$youto1[0x03] = "行の強調1";                   //   3 ; 0000 0011
$youto1[0x43] = "行の強調2";                   //  67 ; 0100 0011

$youto2[0x08] = "大文字/小文字を区別しない";    //   8 ; 0000 1000
$youto2[0x10] = "正規表現";                     //  16 ; 0001 0000
$youto2[0x20] = "単語";                         //  32 ; 0010 0000

// 数値取得 //
if( selecting == false ) selectword;
#HilightCode = val( gettext( seltopx, seltopy, selendx, selendy ) );    // カーソル上の数値
if( #HilightCode == 0 ) {
    #HilightCode = val(input( "調べたい強調定義用の番号" ));            // 数値入力
    if( #HilightCode == 0 ) endmacro;
}

#code1    = #HilightCode & 0xC7;
#code2[0] = #HilightCode & 0x08;
#code2[1] = #HilightCode & 0x10;
#code2[2] = #HilightCode & 0x20;

$msg = "強調定義用の番号 [ " + str(#HilightCode) + " ]\n----------\n";

// 判定処理 //
if( $youto1[#code1] == "" )
    $msg = $msg + "不正な数値です!!";
else{
    // 表示方法
    $msg1 = $youto1[#code1];

    // 検索方法
    #num = 0;
    while( #num <= 2 ){
        if( #code2[#num] != 0 ){
            if( $msg2 != "" ) $msg2 = $msg2 + ", ";
            $msg2 = $msg2  + $youto2[#code2[#num]];
        }
        #num = #num + 1;
    }

    $msg = $msg + "表示方法 : " + $msg1 + "\n検索方法 : " + $msg2;
}

// 表示 //
message $msg;

現在のカーソル上のカラーコードを表示させるマクロです。まあ、なにをやっているかは…見ればわかると思います。(^^;; ちなみにメッセージは秀丸のヘルプより引用しています。

// カーソル上のカラーコードを表示する。
#Bubun          = colorcode & 0x001F;
#Tab            = colorcode & 0x0020;
#ZenSpace       = colorcode & 0x0040;
#HanSpace       = colorcode & 0x0080;
#Select         = colorcode & 0x0100;
#CtrlCode       = colorcode & 0x0200;
#OpenByShell    = colorcode & 0x0400;
#OpenByHidemaru = colorcode & 0x0800;
#E_mail         = colorcode & 0x1000;

$Bubun_msg[ 0] = "普通の部分";
$Bubun_msg[ 3] = "コメント部分";
$Bubun_msg[ 4] = "強調1";
$Bubun_msg[ 5] = "特に強調1";
$Bubun_msg[ 6] = "行の強調1";
$Bubun_msg[ 7] = "強調2";
$Bubun_msg[ 8] = "特に強調2";
$Bubun_msg[ 9] = "行の強調2";
$Bubun_msg[11] = "URL部分";
$Bubun_msg[12] = "E-mail部分";
$Bubun_msg[13] = "HTMLタグ全体部分";
$Bubun_msg[14] = "HTMLタグのエレメント";
$Bubun_msg[15] = "HTMLタグのアトリビュート";
$Bubun_msg[16] = "[EOF]";
$Bubun_msg[20] = "文字定数";
$Bubun_msg[21] = "ファイル名部分";
$Bubun_msg[22] = "強調3";
$Bubun_msg[23] = "強調4";

$msg = $Bubun_msg[#Bubun];

if( #Tab            != 0 ) $msg = $msg + "\n" + "タブ文字";
if( #ZenSpace       != 0 ) $msg = $msg + "\n" + "全角空白";
if( #HanSpace       != 0 ) $msg = $msg + "\n" + "半角空白";
if( #Select         != 0 ) $msg = $msg + "\n" + "範囲選択";
if( #CtrlCode       != 0 ) $msg = $msg + "\n" + "制御コード";
if( #OpenByShell    != 0 ) $msg = $msg + "\n" + "「...を開く」が出来る場所";
if( #OpenByHidemaru != 0 ) $msg = $msg + "\n" + "「...を秀丸で開く」が出来る場所";
// if( #E_mail != 0 ) $msg = $msg + "\n" + "E-mail部分";

message "ColorCode = " + str( colorcode ) + "\n\n" + $msg;

強調表示ファイルを直接書き換えるときに必要となる、強調番号を算出します。Ver.4.xxになってから、「正規表現」指定時に「大文字/小文字の区別しない」がチェックできるようになっていたので修正しました。

//// 初期設定 ////
$youto1[0] = "強調1";
$youto1[1] = "強調2";
$youto1[2] = "強調3";
$youto1[3] = "強調4";
$youto1[4] = "特に強調1";
$youto1[5] = "特に強調2";
$youto1[6] = "行の強調1";
$youto1[7] = "行の強調2";
$youto2[0] = "大文字/小文字を区別しない";
$youto2[1] = "正規表現";
$youto2[2] = "単語の検索";
$check_str[0] = "□"; // 未チェック
$check_str[1] = "■"; // チェック済み
$check_str[2] = "×"; // チェック不可
#hilight1[0] = 0x01;
#hilight1[1] = 0x41;
#hilight1[2] = 0x81;
#hilight1[3] = 0xC1;
#hilight1[4] = 0x05;
#hilight1[5] = 0x45;
#hilight1[6] = 0x03;
#hilight1[7] = 0x43;
#hilight2[0] = 0x08;
#hilight2[1] = 0x10;
#hilight2[2] = 0x20;

//// 『表示方法』の選択 ////
menuarray $youto1, 8;
#menu1 = result - 1;
if( #menu1 == -1 ){
endmacro;
}else{
#kyoutyou = #hilight1[#menu1];
}
$str = $youto1[#menu1];

//// 『検索方法』の選択 ////
while( #menu2 != -1 ){
    $menu_str[0] = $check_str[#check[0]] + $youto2[0];
    $menu_str[1] = $check_str[#check[1]] + $youto2[1];
    $menu_str[2] = $check_str[#check[2]] + $youto2[2];
    menuarray $menu_str, 3;
    #menu2 = result - 1;
    if( #menu2 == 0 ){
        // 『大文字/小文字を区別しない』の切り替え
        #kyoutyou = #kyoutyou ^ #hilight2[0];
        #check[0] = #check[0] ^ 1;
    }else if( #menu2 == 1 ){
        // 『正規表現』の切り替え
        #kyoutyou = #kyoutyou ^ #hilight2[1];
        #check[1] = #check[1] ^ 1;
    }else if( #menu2 == 2 ){
        // 『単語の検索』の切り替え
        #kyoutyou = #kyoutyou ^ #hilight2[2];
        #check[2] = #check[2] ^ 1;
    }
}

//// 『検索方法』の文字列追加 ////
if( #check[0] == 1 ) $str = $str + "\n" + $youto2[0];
if( #check[1] == 1 ) $str = $str + "\n" + $youto2[1];
if( #check[2] == 1 ) $str = $str + "\n" + $youto2[2];
//// 表示 ////
message $str + "\n\n上記の組み合わせは、『" + str( #kyoutyou ) + "』です。";

書き込み禁止にします。ちなみにファイル属性を変えているわけではないのでご注意を。(それくらいわかる?)

// 上書き禁止にする
if( readonly == 0 ){
    readonlyswitch;
}