簡體   English   中英

檢測單元格的條件顏色

[英]Detect the Conditional color of a cell

我正在將郵件從Excel合並到Word,並且需要復制某些單元格的背景顏色以及內容。

在SO上,我了解到可以添加一個幫助器列,並插入一個自定義函數(類似於Selection.Interior.Color),該函數可以檢測所需單元格的代碼。 我打算讓郵件合並秘密地將該代碼傳遞給Word,在那里宏將看到它並使用它來着色相應的表格單元格。

不幸的是,Selection.Interior.Color僅檢測單元格的自然, 基礎顏色,而不檢測條件格式的顏色。

有沒有一種方法可以檢測條件格式指定的顏色?

(有35個不同的列,使用至少8組不同的條件規則)。

結論:這些解決方案似乎有效,但是我決定避免向Excel工作表中添加數據或宏。 相反,我在Word中放置了一個宏,該宏基本上復制了條件格式設置功能。 它很慢,但是我認為它最終會更干凈。

感謝大家。

正如@David所說,這似乎很痛苦。 但是,如果條件格式僅包含“傳統”標准excel顏色(請參見此處 ),則以下內容似乎可以正確響應(未進行詳盡測試)。 列A(第1到12行)包含1到12的值,並將條件格式應用於這些單元格。 只要顏色是“標准”顏色,下面的代碼就可以正常工作。

Sub Button1_Click()
    For i = 1 To 12
        Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet1").Cells(i, 1).DisplayFormat.Interior.ColorIndex
    Next
End Sub

這是一個例程,將displayformat.interior.color代碼放在要測試的列旁邊的“幫助列”中。 我還添加了一個列來顯示RGB值,但僅出於興趣。 哦,顏色都是由條件格式生成的。

Option Explicit
Sub GetColor()
    Dim R As Range, C As Range
Set R = Range(Cells(2, 1), Cells(10, 1))
For Each C In R
    C.Offset(0, 1).Value = C.DisplayFormat.Interior.Color
    C.Offset(0, 2).Value = converttorgb(C.Offset(0, 1).Value)
Next C
End Sub

Function ConvertToRGB(lColor As Long) As String
    Dim H As String
    Dim Red As Integer, Green As Integer, Blue As Integer
    H = Format(Hex(lColor), "@@@@@@")
Red = Val("&H" & Right(H, 2))
Green = Val("&H" & Mid(H, 3, 2))
Blue = Val("&H" & Left(H, 2))

ConvertToRGB = Format(Red, "0\, ") & Format(Green, "0\, ") & Format(Blue, "0")

End Function

在此處輸入圖片說明

根據您將此信息傳輸到Word的方式,您甚至可能不需要在工作表上放置它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM