我有F列数字,每个数字指的是颜色代码,我试图根据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结束子对象
请帮忙,请提前谢谢。
发布于 2016-11-20 11:31:22
我会将您的代码拆分为2个Sub:
Sub CondFormat -应用条件格式(一次)。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发布于 2016-11-20 10:26:56
因为您已经有了一个循环来重复F3:F 1000中的单元格,使用它就足够了。主要是将.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 + 1https://stackoverflow.com/questions/40702374
复制相似问题