簡體   English   中英

.interior.color \\ VBA EXCEL 2013中范圍的值

[英]value from a range in .interior.color \ VBA EXCEL 2013

我在列F編號中,每個數字指的是一個顏色代碼,我試圖根據其值自動更改F中的每個單元格顏色,但是所有僅僅是黑色,下面是我的代碼:

子亮點()

 For Each C In Worksheets("Sheet3").Range("F3:F1000")


With Sheet3.Range("$F1:$F1000")
    .FormatConditions.Delete

    With .FormatConditions.Add(Type:=xlExpression, Formula1:="=($F1<>"""")")
        .Interior.Color = C.Value
        .Font.Color = vbWhite
 End With

 End With
 Next C

結束子

請幫助,並提前感謝您。

因為你已經有一個循環來重復F3:F1000中的單元格,所以使用它就足夠了。 最主要的是改變.Interior.Color到.Interior.ColorIndex

Sub Highlight()

For Each C In Worksheets("Sheet3").Range("F3:F1000")

If (C <> "") Then
    C.Interior.ColorIndex = C.Value
    C.Font.Color = vbWhite
End If

Next C
End Sub

唯一的問題是,如果單元格中的任何數字大於56,您將在ColorIndex值中得到下標錯誤。 您可以通過放置來回收顏色

c.Interior.ColorIndex = (c.Value - 1) Mod 56 + 1

我會將你的代碼分成2 Sub

  1. Sub CondFormat - 應用條件格式(一次)。
  2. Sub Highlight - 根據它的值應用單元格顏色 - 更頻繁。

Option Explicit

Dim LastRow As Long

Sub CondFormat()

With Worksheets("Sheet3")
    LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row

    With .Range("F1:F" & LastRow)
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=($F1<>" & Chr(34) & Chr(34) & ")"
    End With

End With

End Sub


Sub Highlight()

Dim Rng As Range

With Worksheets("Sheet3")
    LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
    For Each Rng In .Range("F3:F" & LastRow)
        Rng.Interior.Color = Rng.Value
        Rng.Font.Color = vbWhite
    Next Rng
End With

End Sub

暫無
暫無

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

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