Excelで課題や質問の管理表で作業している時や、スケジュールを作成したりするときに、条件付き書式って便利ですよね。
ただ、条件付き書式ってどんだけ完璧に範囲指定をしていたとしても、切り取りしたりコピーすると、条件書式の範囲が断片化してしまったり、書式の範囲がずれていったりして不快になってきますよね。最終的にはファイルが重くなってしまって、作業効率が悪くなるなんてことも。
そして、なんとかこの条件書式を直そうとすると、絡まったあやとりをほぐすように、かなり面倒くさいです。
今回は、そういった条件付き書式の断片化であったり範囲ズレなどが起きても、元通りの条件付き書式にささっと戻せるマクロを自作したので、ご紹介します。
こんな方におすすめ
- 条件付き書式のズレを1操作で元通りにしたい方。
目次
条件付き書式を再設定出来るマクロ
早速、お手製のマクロをご紹介します。こちらのコードをVBAのModuleに貼り付けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Private Sub Conditional_Format(ByVal 列 As String _ , ByVal 数式 As String _ , Optional ByVal 網掛色 As XlRgbColor _ , Optional ByVal 文字色 As XlRgbColor = rgbBlack _ , Optional ByVal 下線 As Boolean = False _ , Optional ByVal 太字 As Boolean = False) Dim fc As FormatCondition Set fc = Range(列).FormatConditions.Add( _ Type:=xlExpression, _ Formula1:=数式) If 網掛色 <> 0 Then fc.Interior.Color = 網掛色 End If If 文字色 <> rgbBlack Then fc.Font.Color = 文字色 End If If 太字 Then fc.Font.Bold = True If 下線 Then fc.Font.Underline = True Set fc = Nothing End Sub |
条件付き書式を再設定出来るマクロの使い方
上記で紹介したマクロは次の「Call 文」のような形で利用します。
1 2 3 4 5 6 7 8 9 10 11 | Sub 条件付き書式の再設定() Dim fc As FormatCondition '****①A~K列の条件付き書式を削除**** Range("A:K").FormatConditions.Delete '****②A~K列の再設定**** Call Conditional_Format("$A8:$K200", "=$J8=""実施済""", rgbLightGray) Call Conditional_Format("$A8:$K200", "=$E8=""High""", , rgbDarkSlateGrey, , True) End Sub |
①で条件付き書式を削除したい範囲を指定し、②で上記の関数を呼び出して条件付き書式をコードで設定します。
関数を呼び出す際の引数は次のとおりです。
- 第一引数・・・条件付き書式を設定したい範囲
- 第二引数・・・条件式
条件付き書式を設定する際に、次の数式欄に設定する内容をコードで設定します。
※文字列を条件にする場合("「ダブルクォーテーション」を使う場合)は、上記例のようにダブルクォーテーションを重ねるようにしましょう。 - 第三引数(省略可)・・・網掛色(rgbXXXで設定します。省略した場合は透明になります)
- 第四引数(省略可)・・・文字色(rgbXXXで設定します。空にした場合は黒になります)
- 第五引数(省略可)・・・下線(Trueを設定すると、条件式に当てはまる場合に下線が引かれます)
- 第六引数(省略可)・・・太字(Trueを設定すると、条件式に当てはまる場合に太字になります)
ココに注意
このマクロですが、エクセルの骨格である行や列の位置が変えた場合は、コードの範囲を再設定をしないときちんと動作しない点が注意です。
おわりに
今回は条件付き書式をササッと再設定するマクロをご紹介しました。
条件付き書式が気になっている方は是非活用してみてください!
関連
その他にもExcelで流用可能なマクロをいくつかご紹介しているので、気になった方は観ていってくださいね!
Excelのオブジェクト(吹き出し等)を制御するマクロ・他
すごくマニアックなのですが、六星占術で一気に大多数の人を占うマクロです。
ご閲覧ありがとうございました。
ではでは(^^)/