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


アニメ『Fate/ZERO』(2011)
シリーズを通して見たくなったので、見る順番が放送順と違いますが、物語の時間軸順の方が分かりやすいのだろうなあと思って、ZEROから見てます。面白いし2クール分あるので見応えがあります。休日をつかって一気に見るつもりです。

前回の続きです。

前回までの「正」の字を描く条件付き書式は、5までの数字までしか対応していませんでした。もっと大きな数字を使えるように、プログラムを改造していきます。

元のプログラムです。

sub test()
	条件付き書式追加 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

正の字は何個も並べたいので当然for等で繰り返し処理となります。B1:E1というような指定方法では繰り返し処理に不向きです。Cellsを使います。

セル範囲の指定方法をこのように修正します。
Range(“B1:E1”) → Range(Cells(1,2),Cells(1,5))

変更後のソースです。

sub test()
	y=1
	for xx=0 to 4
	x=2 + xx*5
	条件付き書式追加 Range(Cells(y  ,x  ),Cells(y  ,x+3)),"=$A$2>="&str(xx*5+1),xlBottom
	条件付き書式追加 Range(Cells(y+1,x+1),Cells(y+4,x+1)),"=$A$2>="&str(xx*5+2),xlRight
	条件付き書式追加 Range(Cells(y+2,x+2),Cells(y+2,x+2)),"=$A$2>="&str(xx*5+3),xlBottom
	条件付き書式追加 Range(Cells(y+3,x  ),Cells(y+4,x  )),"=$A$2>="&str(xx*5+4),xlRight
	条件付き書式追加 Range(Cells(y+5,x  ),Cells(y+5,x+3)),"=$A$2>="&str(xx*5+5),xlTop
	next
end sub

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

マクロを実行すると、各セルに条件付き書式が設定されて、数字を入れるとこのように正の字が表示されます。

Leave a Reply

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

CAPTCHA