カオスになった条件付き書式を整えるVBAテクニック

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

  • 「Excelファイルが重くて開くのに時間がかかる…」
  • 「壊してしまったらどうしよう…」

と、胃がキリキリするような不安を感じていませんか?

その「重さ」の原因、「増殖した条件付き書式」かもしれません。

行をコピペするたびに、目に見えない裏側でルールが勝手に増えてしまい、気づかぬうちにExcelが悲鳴を上げていることがよくあります。

今日は、そんな悩みを解決するVBAテクニックをご紹介します。

【業務効率化】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 を削除またはコメントアウトしてください。

コードのポイント

  1. FormatConditions.Delete: 対象範囲の古いルールを全部消します。これでファイルが軽くなります。
  2. FormatConditions.Add: ここで新しいルールを作ります。Type:=xlExpression は「数式を使用して…」という意味です。
  3. Formula1:=”=$A2=””完了”””: Excelの関数と同じです。「A列が完了なら」という条件を指定しています。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました