Excel VBA to Copy Cell Background Color (with Easy Examples)

Copying cell background color is a common task in Excel VBA, especially when working with large datasets or formatting reports. In this article, we will explore different problems & solutions for using Excel VBA to copy cell background color. By the end of this article, you will have a solid understanding of how to copy cell background color in Excel VBA and be able to choose the method that best fits your needs.

How to Copy Cell Background Color in Excel VBA (Excel VBA Copy Cell Background Color)


How to Launch VBA Editor in Excel

To open the VBA code editor in Excel you can utilize the keyboard shortcut. Let’s see the process.

  • Press Alt + F11 to open your Microsoft Visual Basic.

Opening of VBA editor in Excel worksheet

  • Then press Insert > Module to open a blank module.

Vba Editor interface

In this editor, you can write your code.


Excel VBA to Copy Cell Background Color: 5 Scenarios

Copying a cell’s background color is a common task in Excel VBA, and it can be useful in many different scenarios such as data analysis, data entry, data validation, formatting, and so on. In this article, we will give you a solid understanding of copying cell background color in Excel with 5 different scenarios. Let’s start!


1. Copy Cell Background Color Using Interior.Color Property

Copy Cell Background Color Using the Interior.Color Property

In Interior.Color Property method involves getting the color value of the source cell’s interior and then setting the color value to the target cell’s interior. To get a quick overview of the method check the code given below.

Code for Copying Cell Background Color Using the Interior.Color Property

Sub CopyCellBackgroundColor()
    'Set the source cell
    Set sourceCell = Range("B4:E4")
    'Set the destination cell
    Set destinationCell = Range("B14:E14")
    'Copy the background color from the source cell to the destination cell
    destinationCell.Interior.Color = sourceCell.Interior.Color
End Sub

Here the given code will copy the background color of cells in the B4:E4 range and paste it into the B14:E14 range.

It sets the sourceCell variable to cell B4:E4 and the destinationCell variable to cell  B14:E14. It then uses the Interior.Color property to copy the background color from the source cell and paste it into the destination cell.

After applying your code in your worksheet, you will get the output described below.

Output image of Copying Cell Background Color Using the Interior.Color Property


2. Copy Cell Background Color with xlPasteFormats Property

Copying Cell Background Color with xlPasteFormats Property

Another way to copy the cell background color is to use xlPasteFormats Property in your VBA code. See the following VBA code to have a clear idea about how it works.

Code for Copying Cell Background Color with xlPasteFormats Property

Sub paste_xlPasteFromats()
    ' copy from cell B5 to B10
    Range("B5:B10").Copy
    ' paste to cell B15 to B20
    Range("B15:B20").PasteSpecial Paste:=xlPasteFormats
End Sub

This given code uses the Copy method to copy the range B5:B10, and then uses the PasteSpecial method to paste the copied formatting to the range B15:B20. The xlPasteFormats argument specifies that only the formatting of the copied cells should be pasted, without affecting any of the data or formulas in the destination cells.


3. Copy Cell Background Color and Paste It to the Corresponding Cell of Another Sheet

Copy the Cell Background Color And Paste It to the Corresponding Cell of Another Sheet

Now if we want to construct a VBA macro that copies the cell colors from one worksheet to the same range of cells in another worksheet, you can follow the code described below.

Code for copying the Cell Background Color And Paste It to the Corresponding Cell of Another Sheet

Sub Copy_Cell_Color_to_Another_Sheet()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim sourceRange As Range
    Dim targetRange As Range
    Dim sourceCell As Range
    Dim targetCell As Range
    Set sourceSheet = ThisWorkbook.Worksheets("Copy Cell (Source Sheet)") ' Replace "Copy Cell (Source Sheet)" with the name of your source worksheet
    Set targetSheet = ThisWorkbook.Worksheets("Copy Cell (Target Sheet)") ' Replace "Copy Cell (Target Sheet)" with the name of your target worksheet
    Set sourceRange = sourceSheet.Range("B4:F10") ' Replace "B4:F10" with the range of cells you want to copy
    Set targetRange = targetSheet.Range("B4:F10") ' Replace "B4:F10" with the range of cells you want to paste into
    For Each sourceCell In sourceRange
        Set targetCell = Cells(sourceCell.Row, sourceCell.Column)
        targetCell.Interior.Color = sourceCell.Interior.Color
    Next sourceCell
End Sub

Code Breakdown

  • Firstly there are six variables defined at the beginning of the code.
  • The Set statement is then used to assign values to the worksheets and range variables.
  • For Each sourceCell In sourceRange: iterates through each cell in the source range, and the current cell is assigned to the sourceCell variable.
  • Set targetCell = Cells(sourceCell.Row, sourceCell.Column) set the cell in the target range that corresponds to the same row and column as the current source cell.
  • Finally, the interior color of the target cell is set to the same value as the interior color of the source cell.

Note that this macro assumes that the source and target ranges have the same size and shape. If the ranges are different sizes, you need to modify the code accordingly


4. Copying Cell Background Color to Mark Student Result

Copy Cell Background Color for Marking Student Result

Now if you want to assign letter grades to student marks in a specified range and then apply a corresponding color to the grades based on a reference table, this section of our article will surely help you.

Code image of Copying Cell Background Color for Marking Student Result

Sub Copy_Cell_with_StudentMarks()
    For Each markCell In Range("D5:D10") 'change this to the range that contains the student marks
        Set gradeCell = markCell.Offset(0, 1)
        Select Case markCell.Value 'check the value of the mark cell and assign a grade accordingly
            Case Is >= 80
                gradeCell.Value = "A"
            Case Is >= 70
                gradeCell.Value = "B"
            Case Is >= 60
                gradeCell.Value = "C"
            Case Else
                gradeCell.Value = "F"
        End Select
        For Each gradeCell In Range("E5:E10") 'change this to the range that contains the student Grade
            For Each refgradecell In Range("B13:B16") 'change this to the range that contains the grade remark color
                If gradeCell.Value = refgradecell.Value Then
                    gradeCell.Interior.Color = refgradecell.Offset(0, 1).Interior.Color
                End If
            Next refgradecell
        Next gradeCell
    Next markCell
End Sub

Code Breakdown

  • For Each markCell In Range(“D5:D10”) iterates through each cell in the range that contains the student marks, which is specified as “D5:D10” in the code.
  • The macro then uses the Offset property to set the gradeCell variable to the cell to the right of the current markCell. This is the cell where the corresponding letter grade will be written.
  • Select Case markCell.Value check the value of the markCell and assign a gradeCell accordingly. The gradeCell value is set to “A” if the mark is 80 or above, “B” if the mark is between 70 and 79, “C” if the mark is between 60 and 69, and “F” if the mark is below 60.
  • The Nested For Each loop and If statement is then used to check if the value of the gradeCell matches the value of the current reference grade cell. If there is a match, the interior color of the gradeCell is set to the same value as the interior color of the cell to the right of the current reference grade cell.
  • The loops then continue to the next cell until all marks and grades have been assigned and colored.

Read More: Excel VBA to Highlight Cell Based on Value


5. Copy Cell Background Color with Matching Data

Copy Cell Background Color with Matching Data

The code we are now going to articulate can be helpful in situations where you have a list of values that you want to match to a reference list and apply a corresponding color to a range of cells. This can make it easier to visually identify and analyze data for each company, and improve the overall readability and clarity of your spreadsheet.

Code for Copying Cell Background Color with Matching Data

Sub ColorMatch()
    Dim CompanyName As Range
    Set rng1 = Range("C5:C18")
    For Each cell In rng1
        For Each CompanyName In Range("B21:B23")
            If cell.Value = CompanyName.Value Then
                cell.Offset(0, -1).Resize(1, 4).Interior.Color = CompanyName.Offset(0, 1).Interior.Color
            End If
        Next CompanyName
    Next cell
End Sub

Here, This macro compares values in the range C5:C18 to a reference list of company names and colors in the range B21:B23. If a match is found, the macro applies the corresponding color to a range of cells to the left of the matched value. The macro uses two Nested For Each loop to iterate through the ranges and an If statement to check for matches.

Output image of Copying Cell Background Color with Matching Data


Frequently Asked Questions

1. How do I fill cells with the background color?

Other than inserting VBA code, you can use the built-in Excel feature to fill cells with the background color. To accomplish the task, you can use the Fill Color button in the Font group on the Home tab of the ribbon. This button looks like a paint bucket and is located next to the Font Color button.

2. How do I copy and paste a cell with a background color?

Copying a specific cell with a background color might be one of the easiest ways to do it. You can use the cult classic Ctrl+C shortcut key to copy the cell value with background color and paste it to your desired cell with the Ctrl+V shortcut key.

3. How do I copy only the background color in Excel?

If you want to paste only the background color of a cell without its cell value, you can use the Formatting (R) command instead of the regular paste command.  You will find Formmating (R) command down to Other Paste Options from the Home tab.


Download Practice Workbook

You can download and practice the dataset that we have used to prepare this article.


Conclusion

In this article, we have discussed how to use Excel VBA to copy cell background color. As you have already understood, there are plenty of ways to do this task. So before going through a specific method, ensure the method you choose aligns with your work. Further, If you have any queries, feel free to comment below, and we will get back to you soon.


Related Articles

Get FREE Advanced Excel Exercises with Solutions!
Mohammad Shah Miran
Mohammad Shah Miran

Mohammad Shah Miran has a professional background spanning over a year at Softeko. Initially starting as an Excel and VBA writer, he authored more than 50 articles for the ExcelDemy project. Currently, Miran is engaged in the LinuxSimply project as a Linux content developer, completed over 40 articles. His analytical approach extends across various domains, including Excel, VBA, Bash scripting, Linux, data analysis, and Python programming. In his leisure time, Miran enjoys watching movies and series or listening... Read Full Bio

We will be happy to hear your thoughts

Leave a reply

Advanced Excel Exercises with Solutions PDF

 

 

ExcelDemy
Logo