How to automatically link a cell color to another in Excel?

While using Microsoft Excel, do you know how to link a cell color to another automatically? This article will show you method to achieve it.

Automatically link a cell color to another with VBA code


Automatically link a cell color to another with VBA code

Supposing you want to link the fill color of cell A1 to C1, when changing the fill color of A1, the color of C1 will turn to the same automatically. Please do as follows.

1. Right click the sheet tab you need to link a cell color to another, and then click View Code from the right-clicking menu.

2. In the opening Microsoft Visual Basic for Applications window, please copy and paste the below VBA code into the Code window.

VBA code: Auto link a cell color to another in Excel

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Me.Range("C1").Interior.Color = Me.Range("A1").Interior.Color
End Sub

Note: you can change the cells reference in the code as you need.

3. Go ahead to press the Alt + Q keys at the same time to close the Microsoft Visual Basic for Applications window.

From now on, when changing the fill color of cell A1, the fill color of cell C1 will be changed to the same color automatically.


The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails...
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range...
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns... Prevent Duplicate Cells; Compare Ranges...
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select...
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more...
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments...
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic...
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF...
  • More than 300 powerful features. Supports Office/Excel 2007-2019 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.
kte tab 201905

Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
officetab bottom
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Ran · 6 days ago
    I am looking copy colors generated from conditional formatted table, to another table - automatically with a formula/function.
    Is this possible?
  • To post as a guest, your comment is unpublished.
    esadtrades · 2 months ago
    How do I link a cell colors based on another cells value and color to be automatically linked.
    Fort Example.

    I have sheet 1 value is 898 and on sheet 2 value is 898 and that cell is colored pink. How can I link the same color to be the same based on the clue is sheet 2 to be linked to sheet 1 - so it can show the same color. But it would be a range; using the entire row to match its values and then link the colors.

    Any help is greatly appreciated
  • To post as a guest, your comment is unpublished.
    Lisa · 5 months ago
    I am using this to create weaving patterns. I would like to have several sets of groups so I only have to change one cell to see what will happen in my pattern. It worked from cell a1 to c1 but when I tried to add a new set a2 to c1 it did not. I may misunderstand, but I copied the same formula below the first one and changed the cell references. Is that the problem? Is there another way?
    • To post as a guest, your comment is unpublished.
      Sara · 2 months ago
      This one worked for me when pasting in a second sheet reference--but I had to make a modification, I will show the modification below so you can see Crystal's first version, then mine with modification that worked when I needed to include two sets instead of one. This is the one Crystal gave to Joey after he said the target range turned black when he tried it:

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim xRg As Range
      Dim xCRg As Range
      Dim xStrAddress As String
      Dim xFNum As Integer
      xStrAddress = "Sheet2!$A$1:$A$10"
      Set xRg = Application.Range(xStrAddress)
      Set xCRg = Me.Range("$A$1:$A$10")
      On Error Resume Next
      For xFNum = 1 To xRg.Count
      xRg.Item(xFNum).Interior.Color = xCRg.Item(xFNum).Interior.Color
      Next
      End Sub

      My mod that worked in order to include two sets (e.g. reference different columns or rows or what have you) was to include this part:

      On Error Resume Next
      For xFNum = 1 To xRg.Count
      xRg.Item(xFNum).Interior.Color = xCRg.Item(xFNum).Interior.Color
      Next

      after each of my "sets"

      So, without modifying the sample sets that Crystal gave to be different from each other (which yours probably will be if you're trying to refer to different rows etc), it would look like this:

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim xRg As Range
      Dim xCRg As Range
      Dim xStrAddress As String
      Dim xFNum As Integer
      xStrAddress = "Sheet2!$A$1:$A$10"
      Set xRg = Application.Range(xStrAddress)
      Set xCRg = Me.Range("$A$1:$A$10")
      On Error Resume Next
      For xFNum = 1 To xRg.Count
      xRg.Item(xFNum).Interior.Color = xCRg.Item(xFNum).Interior.Color
      Next
      xStrAddress = "Sheet2!$A$1:$A$10"
      Set xRg = Application.Range(xStrAddress)
      Set xCRg = Me.Range("$A$1:$A$10")
      On Error Resume Next
      For xFNum = 1 To xRg.Count
      xRg.Item(xFNum).Interior.Color = xCRg.Item(xFNum).Interior.Color
      Next
      End Sub

      with lines 6-8 and 13-15 being the "sets"
      and lines 9-12 and 16-19 being the code that has to repeat after each set.

      I hope that makes sense because I know nothing about this, I just found a way to copy what was listed here that worked. The first time I tried having two sets by plugging in to the code as is, the first set turned the cells black and the second set worked and turned the target cells the right color. I finally figured out that in order to work, each set needed the line 9-12 code after it. This mod allowed appropriate colors to (in my case) transfer from two different columns on the origin sheet to corresponding cells within a given range on the target sheet.

  • To post as a guest, your comment is unpublished.
    Charles · 11 months ago
    Is it possible to link the color from one range on one sheet to another range of the same size on a different sheet? For example, I have alternating colors every couple of rows, and I want that color scheme to copy over to another sheet.
    • To post as a guest, your comment is unpublished.
      crystal · 10 months ago
      Hi Charles,
      The below code can do you a favor. If you want to link the color from range A1:A19 on Sheet1 to the same range "A1:A19" on Sheet2, please copy the code into the Sheet1's Code window, after that, click on any cell on Sheet1 to activate the code. Hope I can help. Thank you for your comment.

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim xRg As Range
      Dim xStrAddress As String
      xStrAddress = "Sheet2!$A$1:$A$19"
      Set xRg = Application.Range(xStrAddress)
      xRg.Interior.Color = Me.Range("A1:A19").Interior.Color
      End Sub
      • To post as a guest, your comment is unpublished.
        Joey · 8 months ago
        Hi,
        this code seems to work if I reference one cell but if I input a range, the range on sheet 2 goes black instead of coping the interior color.

        any ideas why that might be happening?
        • To post as a guest, your comment is unpublished.
          crystal · 8 months ago
          Hi Joey,
          Sorry for the mistake. Try this code:

          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          Dim xRg As Range
          Dim xCRg As Range
          Dim xStrAddress As String
          Dim xFNum As Integer
          xStrAddress = "Sheet2!$A$1:$A$10"
          Set xRg = Application.Range(xStrAddress)
          Set xCRg = Me.Range("$A$1:$A$10")
          On Error Resume Next
          For xFNum = 1 To xRg.Count
          xRg.Item(xFNum).Interior.Color = xCRg.Item(xFNum).Interior.Color
          Next
          End Sub
          • To post as a guest, your comment is unpublished.
            LG · 3 months ago
            this does not work for me. may cell range is not the same on both sheets. can you help advise what to do or how to adjust code pls?

            • To post as a guest, your comment is unpublished.
              crystal · 3 months ago
              Hi LG,
              There are two lines you can modify: the range "$A$1:$A$10" of the eighth line, and the "Sheet2!$A$1:$A$10" of the sixth line, which indicate you will link the fill color of range A1:A10 in a worksheet (supposing Sheet1, and the code should be added to this sheet code window) to the same range in Sheet2.
              You can specify two different ranges as you need. And please make sure the sheet name you type in the sixth line is an existing sheet name.
          • To post as a guest, your comment is unpublished.
            LG · 3 months ago
            this does not work for me. I keep getting error about "compile error, ambiguous name detected"....
          • To post as a guest, your comment is unpublished.
            Mike · 6 months ago
            Hi Crystal!
            What does the same code look like if I want it to copy to both Sheet2 and Sheet3 at the same time?
            • To post as a guest, your comment is unpublished.
              Jeff · 2 months ago
              Hi can anybody answer this question. I'm trying to do exactly this and having no luck.
          • To post as a guest, your comment is unpublished.
            Joey · 8 months ago
            Hi Crystal,
            Thanks very much. Works perfectly!
            You’re amazing! O_o
  • To post as a guest, your comment is unpublished.
    Amanda · 1 years ago
    Unfortunately it didn't work for me. I'm wondering if it is because the originating cell is a list with a conditional formatting rule to change background colors depending on what option is picked in the list.
    • To post as a guest, your comment is unpublished.
      crystal · 10 months ago
      Hi Amanda,
      This code doesn't work for the fill color assigned by conditional formatting rule. Sorry for the inconvenience.
  • To post as a guest, your comment is unpublished.
    Mario · 1 years ago
    If the cells are un different sheets?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi Mario,
      Supposing you want to link the color of cell A1 in current worksheet to range B1:J19 in Sheet2, please apply the below VBA code. After changing the fill color of A1, please click on another cell in current worksheet to activate the code.

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim xRg As Range
      Dim xStrAddress As String
      xStrAddress = "Sheet2!$B$1:$J$19"
      Set xRg = Application.Range(xStrAddress)
      xRg.Interior.Color = Me.Range("A1").Interior.Color
      End Sub
      • To post as a guest, your comment is unpublished.
        jgd · 1 years ago
        That worked. How would it work if you have A1 in Sheet1 changes to happen to B1 in Sheet2, but also A2 in Sheet1 changes to happen to B2 in Sheet2?
        • To post as a guest, your comment is unpublished.
          Viplov · 10 months ago
          Hi Can anyone help with above question asap, I am in dire need of it and running out of time.
          • To post as a guest, your comment is unpublished.
            crystal · 10 months ago
            Hi,
            The below VBA code can help you solve the problem. Thank you for your comment.

            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            Dim xRg As Range
            Dim xStrAddress As String
            xStrAddress = "Sheet2!$B$1"
            Set xRg = Application.Range(xStrAddress)
            xRg.Interior.Color = Me.Range("A1").Interior.Color
            xStrAddress = "Sheet2!$B$2"
            Set xRg = Application.Range(xStrAddress)
            xRg.Interior.Color = Me.Range("A2").Interior.Color
            xStrAddress = "Sheet2!$B$3"
            Set xRg = Application.Range(xStrAddress)
            xRg.Interior.Color = Me.Range("A3").Interior.Color
            End Sub
  • To post as a guest, your comment is unpublished.
    alejandro · 1 years ago
    y su el la celda A1 tiene un formato condicional ?
  • To post as a guest, your comment is unpublished.
    Rogerio · 1 years ago
    I saw up here, in the explanation, how to for one cell, how to do for few cells?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi Rogerio,
      Do you mean link the fill color of a cell to multiple cells at the same time?
  • To post as a guest, your comment is unpublished.
    Dustin · 1 years ago
    Is there a way to do this if the two cells are in different workbooks?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi Dustin,
      Can't handle different workbooks. Thank you for your comment.
  • To post as a guest, your comment is unpublished.
    Jessica · 2 years ago
    yes I would like to know how to mirror a color to another sheet??? I have a formula in both boxes but I would like the color of the one to mirror the color on the mainsheet when it changes. i.e... Training Date sheet is w/in 30 days and box changes to red; the corresponding box on mainsheet, the box with the "X" changes to red also.
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi Jessica,
      What do you mean box? Textbox?
  • To post as a guest, your comment is unpublished.
    g4m3rx · 3 years ago
    Great tutorial. Thanks :) !!!!
  • To post as a guest, your comment is unpublished.
    brigitte · 3 years ago
    what about between sheets in the same workbook - please advice how does the formula change? thanks!