VBA 色の変更を別シートに反映:高速化テク(動画あり)

エクセルマクロ:色の変更を別シート反映するアイキャッチ ExcelVBA

エクセルマクロで、セルの色の変更を他のシートに反映するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

色の変更を他のシートに反映

以下のExcelVBAを実行すると、色の変更を他のシートに反映します。


Sub 色の変更を別シートに反映()
    
Dim Plan_Sheets As Worksheet
Dim Kanri_Sheets As Worksheet

Dim EndRow_Receiving As Long
Dim EndRow_Plan As Long
Dim i As Long
Dim Q As Long

Dim Get_CellColor() As Variant
Dim Get_CellValue() As Variant
    
    Set Plan_Sheets = Sheets("予定")
    Set Kanri_Sheets = Sheets("管理表")
   
    '「管理表」シートのB列の最終行を取得
    EndRow_Receiving = Kanri_Sheets.Cells(Rows.Count, 2).End(xlUp).Row
    
    '配列の要素数を指定
    ReDim Preserve Get_CellColor(EndRow_Receiving)
    ReDim Preserve Get_CellValue(EndRow_Receiving)

    '「管理表」シートのB列の全行のセルの色・値を取得
    For i = 1 To EndRow_Receiving
        With Kanri_Sheets
            Get_CellColor(i) = .Cells(i, 2).Interior.Color
            Get_CellValue(i) = .Cells(i, 2).Value
        End With
    Next i

    '「予定」シートのC列を「色なし」に設定
    Plan_Sheets.Columns("C").Interior.Pattern = xlNone

    '「予定」シートの最終行を取得
    EndRow_Plan = Plan_Sheets.Cells(Rows.Count, 1).End(xlUp).Row
    
    '色の取得数分ループ
    For i = 1 To UBound(Get_CellColor)
            
       '「予定」シートの行ループ
       For Q = 1 To EndRow_Plan
        
          'C列を色付け
          If Plan_Sheets.Cells(Q + 1, 3) = Get_CellValue(i) Then
             Plan_Sheets.Cells(Q + 1, 3).Interior.Color = Get_CellColor(i)
          End If
          
       Next Q

    Next i

    Set Plan_Sheets = Nothing
    Set Kanri_Sheets = Nothing
    Erase Get_CellColor
    Erase Get_CellValue

End Sub

 

マクロ実行後

「管理表」シートは、色の基準となるシートです。

「管理表」シートと同じ配色を、「予定」シートに反映しました。
 
 (2つのシートの想定)
  ①データは縦に増減する。
  ②色分けは変動する。

※「予定」シートの色分けに「条件付き書式」を使用している場合は、
 「条件付き書式」の色分けが優先されます。

 
 

配色を変更した場合

色の基準となる「管理表」シートの配色を変更し、マクロを実行しました。
「予定」シートに色の変更が反映されました。


 
 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】色付けを自動化する使用例まとめ
 

【エクセルマクロ】色付け処理を自動化する:超便利32選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!