值范围在.interior.color \ VBA EXCEL 2013中

我在F列的数字,每个数字是指一个颜色代码,我试图自动更改F中的每个单元格颜色的值,但所有只是在黑色,下面是我的代码:

Sub Highlight()

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 

结束小组

请帮助,并提前感谢您。

我会分裂你的代码2 Sub s:

  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 

由于您已经有了一个循环来重复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