首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >值来自.interior.color \ VBA 2013中的某个范围。

值来自.interior.color \ VBA 2013中的某个范围。
EN

Stack Overflow用户
提问于 2016-11-20 09:12:04
回答 2查看 2.6K关注 0票数 1

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

分高光()

代码语言:javascript
运行
复制
 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

结束子对象

请帮忙,请提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-20 11:31:22

我会将您的代码拆分为2个Sub

  1. Sub CondFormat -应用条件格式(一次)。
  2. Sub Highlight --更频繁地根据其值应用单元格颜色。

代码

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2016-11-20 10:26:56

因为您已经有了一个循环来重复F3:F 1000中的单元格,使用它就足够了。主要是将.Interior.Color改为.Interior.ColorIndex

代码语言:javascript
运行
复制
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值中会出现下标错误。你可以把颜色循环利用

代码语言:javascript
运行
复制
c.Interior.ColorIndex = (c.Value - 1) Mod 56 + 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40702374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档