こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
- 「Excelファイルが重くて開くのに時間がかかる…」
- 「壊してしまったらどうしよう…」
と、胃がキリキリするような不安を感じていませんか?
その「重さ」の原因、「増殖した条件付き書式」かもしれません。
行をコピペするたびに、目に見えない裏側でルールが勝手に増えてしまい、気づかぬうちにExcelが悲鳴を上げていることがよくあります。
今日は、そんな悩みを解決するVBAテクニックをご紹介します。
コピペで使えるコード
今回は、実務で一番よく使う「A列が『完了』になったら、その行全体をグレーにする」という設定をやってみましょう。
以下のコードを標準モジュールに貼り付けてみてください。
Sub FixConditionalFormatting()
' 画面の更新を止めて高速化
Application.ScreenUpdating = False
Dim ws As Worksheet
Set ws = ActiveSheet ' 今見ているシートを対象にします
' 対象範囲の設定
Dim targetRange As Range
Set targetRange = ws.Range("A2:E100")
' 既存の条件付き書式を一度すべて削除
targetRange.FormatConditions.Delete
' 新しいルールを追加
' A列($A2)が「完了」の場合、という数式を設定
With targetRange.FormatConditions.Add(Type:=xlExpression, Formula1:="=$A2=""完了""")
' 背景色を薄いグレーに設定
.Interior.Color = RGB(242, 242, 242)
' 文字色を少し薄くする(お好みで)
.Font.Color = RGB(100, 100, 100)
End With
' 画面更新を再開
Application.ScreenUpdating = True
MsgBox "条件付き書式を整理しました!", vbInformation
End Sub
既存の条件付き書式は残したい場合は、targetRange.FormatConditions.Delete を削除またはコメントアウトしてください。
コードのポイント
- FormatConditions.Delete: 対象範囲の古いルールを全部消します。これでファイルが軽くなります。
- FormatConditions.Add: ここで新しいルールを作ります。Type:=xlExpression は「数式を使用して…」という意味です。
- Formula1:=”=$A2=””完了”””: Excelの関数と同じです。「A列が完了なら」という条件を指定しています。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント