(Excel)条件付き書式をマクロで追加する(その1)


アニメ『メルヘン・メドヘン』

魔法少女アニメですね。原書と言われる魔法の本に選ばれて魔法少女になるようです。本の虫の主人公は魔法の訓練中っぽいです。

ソフトウェアのツールは、ほとんど魔法のツールだなあと思います。プログラマーになりたての頃に、初めて魔法だと感じたのが、テキストエディタのキーボードマクロ。今ではcoreutilsやスクリプト言語でテキスト整形するやり方の方が早いので、あまり使わなくなったのですが、キーボードマクロを使いまくっていた頃がありました。マクロ実行時間に時間が掛かっていたにも関わらず、当時はキーボードマクロこそが最大の効率化であると信じてました。実行中の待ち時間も、隣の人にこのモニタできらめく魔法を自慢するために、わざとお菓子を食べながらくつろいでみたりして。まあ恥ずかしい時期がありました。
テキストエディタのキーボードマクロは滅多に使わなくなりましたが、Excelのマクロ記録はよく使うようになりました。関数リファレンスを読むのが面倒な時に、マクロを自動生成するため使います。
今回はExcelマクロを作ります。
Excelで集計の正の字」で作った「正」の字を描く条件付き書式ですが、たくさん作る場合に面倒なので、マクロ化します。そもそも条件付き書式ではなく、マクロで「正」の罫線を引けば簡単なので、どうしても条件付き書式で作りたい時にぐらいしか使えません。

1. Excelを新規に起動したら、「Excelで集計の正の字」と同じく、A列幅を10、他の列幅は2に設定します。

2. 「Alt」+wmr マクロの記録ダイアログを表示。

3. 「Enter」 マクロの記録を開始します。

4. 正の一番上の線についてだけ条件付き書式を設定します。B1~E1を選択して、だけ「Excelで集計の正の字」で実施したように条件付き書式を追加しておきます。

5.「Alt」+wmr マクロの記録を終了します。

6. 「Alt」+wmve 記録したマクロを編集します。

VBE(VB Editor)でこのようなプログラムが表示されました。

これを改造していきます。まずは関数化と、変数化。変数はなるべく日本人には読みやすい日本語を使っていきます。英語の方が読みやすい場合は英語のままが良いでしょう。

Sub Macro1()
'
' Macro1 Macro
'

'
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A$2>=1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Borders(xlBottom)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub

7. 上記の元ソースから、以下4つを変更します。
Macro1 → 条件付き書式追加
Selection → セル
“=$A$2>=1” → 条件
“xlBottom” → 罫線位置

修正後ソースです。

Sub 条件付き書式追加(セル,条件,罫線位置)
'
    セル.FormatConditions.Add Type:=xlExpression, Formula1:=条件
    セル.FormatConditions(セル.FormatConditions.Count).SetFirstPriority
    With セル.FormatConditions(1).Borders(罫線位置)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
    セル.FormatConditions(1).StopIfTrue = False
End Sub

次にこれを使うマクロ本体を作ります。

sub test1()
	条件付き書式追加 Range("B1:E1"),"=$A$2>=1",xlBottom
	条件付き書式追加 Range("C2:C5"),"=$A$2>=2",xlRight
	条件付き書式追加 Range("D3:D3"),"=$A$2>=3",xlBottom
	条件付き書式追加 Range("B4:B5"),"=$A$2>=4",xlRight
	条件付き書式追加 Range("B6:E6"),"=$A$2>=5",xlTop
end sub

改造したプログラムは、テキストエディタへ張り付け等して、テキストファイルとして保存しておきます。

8. Excelを一端終了し、再度まっさらな状態でExcelを起動します。

9. Excelが起動したら、「Alt」+「F11」でVBEを起動し、「Alt」+imで、標準モジュールを挿入します。
10. テキストファイルに保存した改造プログラムを貼り付け後、「Alt」+qで、VBEを終了。

11. 「Alt」+wmv マクロの記録ダイアログを表示し、「ENTER」で、条件付き書式が追加されます。

「正」の字の表示結果は前回と似たようなものなので省略します。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA