跳到主要內容

如何在Excel中將單元格顏色設置為等於其他單元格顏色?

如果要使一種單元格顏色與另一種顏色匹配,本文中的一種方法可以為您提供幫助。

使用VBA代碼將單元格顏色設置為與另一單元格顏色相同


使用VBA代碼將單元格顏色設置為與另一單元格顏色相同

下面的VBA方法可以幫助您在Excel中將單元格顏色設置為與其他單元格顏色相同。 請執行以下操作。

1.在工作表中,您需要匹配兩個單元格的顏色,請右鍵單擊工作表選項卡,然後單擊 查看代碼 從右鍵單擊菜單中。 看截圖:

2.在開幕 Microsoft Visual Basic for Applications 窗口,您需要將VBA代碼複製並粘貼到“代碼”窗口中。

VBA代碼:設置單元格顏色等於其他單元格顏色

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

備註:在代碼中,A1是包含您將與C1匹配的填充顏色的單元格。 請根據您的需要進行更改。

然後,將單元格C1填充為與單元格A1相同的顏色,如下圖所示。

從現在開始,當更改A1中的填充顏色時,C1將自動匹配相同的顏色。


相關文章:

最佳辦公生產力工具

熱門特色: 尋找、突出顯示或識別重複項   |  刪除空白行   |  合併列或儲存格而不遺失數據   |   沒有公式的回合 ...
超級查詢: 多條件VLookup    多值VLookup  |   跨多個工作表的 VLookup   |   模糊查詢 ....
高級下拉列表: 快速建立下拉列表   |  依賴下拉列表   |  多選下拉列表 ....
欄目經理: 新增特定數量的列  |  移動列  |  切換隱藏列的可見性狀態  |  比較範圍和列 ...
特色功能: 網格焦點   |  設計圖   |   大方程式酒吧    工作簿和工作表管理器   |  資源庫 (自動文字)   |  日期選擇器   |  合併工作表   |  加密/解密單元格    按清單發送電子郵件   |  超級濾鏡   |   特殊過濾器 (過濾粗體/斜體/刪除線...)...
前 15 個工具集12 文本 工具 (添加文本, 刪除字符,...)   |   50+ 圖表 類型 (甘特圖,...)   |   40+ 實用 公式 (根據生日計算年齡,...)   |   19 插入 工具 (插入二維碼, 從路徑插入圖片,...)   |   12 轉化 工具 (數字到單詞, 貨幣兌換,...)   |   7 合併與拆分 工具 (高級合併行, 分裂細胞,...)   |   ... 和更多

使用 Kutools for Excel 增強您的 Excel 技能,體驗前所未有的效率。 Kutools for Excel 提供了 300 多種進階功能來提高生產力並節省時間。  點擊此處獲取您最需要的功能...

kte選項卡201905


Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
Comments (20)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hi, I am trying to change come cells to match another that have been conditionally formatted. Your code 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Range("C1").Interior.Color = Me.Range("A1").DisplayFormat.Interior.Color
End Sub
I adapted to
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Range("A2:C2").Interior.Color = Me.Range("D2").DisplayFormat.Interior.Color
End Sub

This works fine for just one row.  How do I get this to work in all of the rows I need?  If I repeat the code with the next row
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Range("A3:C3").Interior.Color = Me.Range("D3").DisplayFormat.Interior.Color
End Sub

Then I get a Compile error: Ambiguous name detected: Worksheet_SelectionChange
I tried having the code asPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Range("A2:C10").Interior.Color = Me.Range("D2:D10").DisplayFormat.Interior.ColorEnd Sub

But all the rows just filled black rather than the colours required.  What coding do I need?
This comment was minimized by the moderator on the site
Hi -- I'm having a difficult time using your code. I'm trying to do exactly what you're saying. Make one cell be the same color as another cell (without any values necessary) on the same sheet. Is there something in that code that should be adjusted?
This comment was minimized by the moderator on the site
I've attached a screen shot of the file Im working on - I don't seem to be able to upload a .xlsm file? In this file I have used the original VBA from this thread and can now match the conditionally formatted colour of cell A10 in D10. How can I get this to work on a range of cells? I would like to get the colour of the range of cells A10:A200 to transfer over to D10:D200. Can anyone help please? There is a drop down list in use in the A column but once we have placed an order we need to be able to over type the purchase order number. The items in the list are all set to conditionally format to a colour (eg ORDER OK turns cell green, CLIENT TBC turns cell yellow) but the colour goes blank once the PO has been put in.
This comment was minimized by the moderator on the site
image didn't upload - hopefully attached now....
This comment was minimized by the moderator on the site
Wow - this is great. I hope you can help me adapt your script to my needs. I need to make cells D10:D200 match the conditionally formatted colour of cells A10:A200 - can you help me to get this working please. The cells are all in the same worksheet.
This comment was minimized by the moderator on the site
As Chris I am interested in copying the background color from another worksheet?
This comment was minimized by the moderator on the site
I found your code to 'set cell color to equal to another cell color" and it works when I am using it on the same worksheet ( ex from cell A1 to cell A2). I am wondering if there is a way to have this same functionality from another worksheet (ex to copy cell color from sheet1!A1 to sheet2!A1? Any help you could offer would be appreciated!
This comment was minimized by the moderator on the site
This is a good start to what I am looking to do. But I am looking for something a bit more complicated

How could I adapt this to apply to multiple rows and a range. For instance I have a header column in Column B, I want cells from G to CS to match the colour of the header row but only is they have something in them ie the letter x. I know I can write an IF and THEN statement but how would I apply it to multiple Rows without writing a code for each row.
This comment was minimized by the moderator on the site
Hi Zack,
Sorry can't help you with that. Any question about Excel, please don’t hesitate to post in our forum: https://www.extendoffice.com/forum.html.
This comment was minimized by the moderator on the site
hi , how to apply the same VBA but on a range of cells for example :

i want to have the same color of range (C8:X8) to be apply on the range (S16:AL16) one by one in the same order (S16 get the color of C16 , T16 get the color of D8 ....etc)
This comment was minimized by the moderator on the site
Good day,

The below VBA code can help you solving the problem. Thanks for your comment.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xSRg, xDRg, xISRg, xIDRg As Range
Dim xFNum As Long
On Error Resume Next
Set xSRg = Range("C8:X8")
Set xDRg = Range("S16:AL16")
For xFNum = 1 To xSRg.count
Set xISRg = xSRg.Item(xFNum)
Set xIDRg = xDRg.Item(xFNum)
xIDRg.Interior.Color = xISRg.Interior.Color
Next xFNum
End Sub
This comment was minimized by the moderator on the site
Hi

I am trying to do similar, but I have two spreadsheets (files). Spreadsheet 1 is the Master where the data is manually updated and file (spreadsheet 2) is equalling the data in the same cell as spreadsheet 1. When I open spreadsheet 2, I get a prompt to refresh with spreadsheet 1 no promlems, but if the colour of the cell is changed in spreadsheet 1 it does not update in spreadsheet 2, neither does 'strike-trough' of fonts..help please?
This comment was minimized by the moderator on the site
Hi, the cell being referenced for colour changes colour based on conditional formatting. The above doesn't seem to work with that and the destination cells are staying blank. How can this be corrected? Thanks
This comment was minimized by the moderator on the site
If you have Excel 2010 or later you can use the DisplayFormat function to return the color of a conditionally formatted cell. See below:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Range("C1").Interior.Color = Me.Range("A1").DisplayFormat.Interior.Color
End Sub
This comment was minimized by the moderator on the site
AMAZING... I should have read the comments sooner as I have been struggling for a while to figure this out.
This comment was minimized by the moderator on the site
Hi,Would please write a code to apply conditional formatting from a colum of data to the next column?In colum A, I have a series of data from A1 to A1000 including conditional formatting which applies color in some of the cells. I need to apply those colors to the values in the next column B1 to B1000.
very much appreciated.
This comment was minimized by the moderator on the site
Hi, would it be possible to extend this to a conditional formatting; not to match a color created by conditional format, but if a conditional format condition is matched, that the applied conditional format takes on the color of a specific cell. Trying to use this in a gantt chart, colouring the days between start and end date, but the conditional format that generates the gantt bars, should take the color of the cell that contains the Task (which I set manually)
This comment was minimized by the moderator on the site
can this be done on range of cells or just for a single cell?
This comment was minimized by the moderator on the site
LP you are absolutely AMAZING!!!!!!i was trying for the longest time to get cells to match the conditional formatting background color! you are a lifesaver!!!
This comment was minimized by the moderator on the site
I have the same problem. Works on cells without conditional formatting but doesn't with those that do
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations