【问题标题】:Changing Interior Colour of Cells In For Each Loop改变每个循环中单元格的内部颜色
【发布时间】:2023-02-04 01:31:09
【问题描述】:

1]1Sub ColourChange()

Set WS = Sheets("Days")
Set WC = Sheets("Runs")

Dim pr As Long
Dim rr As Long
Dim hr As Long
Dim CurrRow As Long
Dim PrevRow As Long
Dim CurrColor As Long
Dim ColorArr As Variant
Dim ColorIndex As Integer
Dim ColorRange As Range
Dim Color0 As Long
Dim Color1 As Long
Dim Color2 As Long
Dim Color3 As Long
Dim Color4 As Long
Dim Color5 As Long
Dim Color6 As Long
Dim Color7 As Long
Dim Color8 As Long
Dim Color9 As Long
Dim Color10 As Long
Dim Color11 As Long
Dim tms As Long

ColorArr = Array(Color0, Color1, Color2, Color3, Color4, Color5, Color6, Color7, Color8, Color9, Color10, Color11)
ColorIndex = 0
    Color0 = RGB(33, 139, 130)
    Color1 = RGB(154, 217, 219)
    Color2 = RGB(229, 219, 217)
    Color3 = RGB(152, 212, 187)
    Color4 = RGB(235, 150, 170)
    Color5 = RGB(106, 76, 147)


pr = WC.Range("A" & Rows.Count).End(xlUp).Row + 13
Debug.Print pr
Dim TabTimes As Range
Set TabTimes = Application.Range("Days!B15:B" & pr)
TabTimes.Select

tms = pr + 3
Debug.Print tms
pr = WC.Range("H" & Rows.Count).End(xlUp).Row
pr = pr + tms - 1
Debug.Print pr
Dim CPTTimes As Range
Set CPTTimes = Application.Range("Days!B" & tms & ":B" & pr)

For Each cel In TabTimes.Cells
If cel.Interior.Color <> RGB(166, 166, 166) Then
cel.Interior.Color = ColorArr(ColorIndex)
ColorIndex = ColorIndex + 1

        End If
Next cel
On Error Resume Next
End Sub

下午的人 :) 我目前正在尝试根据预先确定的数组设置某些单元格的颜色。这些单元格在 B 列中,从单元格 B15 开始,For Each 语句循环遍历它们。正如您从代码中看到的那样,我希望不同的时间具有预设颜色(Color1/Color2),因为我有另一个更改 RGB 值的代码,以便使用电子表格的人可以选择自己的配色方案,如果这有意义的话.

忽略我在设置命名范围时的糟糕编码,无论如何我可以让它工作吗?目前它只是将所有单元格内部颜色更改为黑色,并将范围内的最后一个颜色更改为其中一种颜色......我怀疑 For Each 不是处理此问题的最佳方法

有人有主意吗?

【问题讨论】:

    标签: excel vba for-loop colors


    【解决方案1】:

    在下一行中,您声明数组有 12 个项目,所有项目的颜色值为黑色 (=0),因为那些 Color0 ... Color11 尚未分配任何颜色值。

    ColorArr = Array(Color0, Color1, Color2, Color3, Color4, Color5, Color6, Color7, Color8, Color9, Color10, Color11)
    

    然后,您将值分配给一些颜色常量,但这些值不会神奇地移动到数组中

        ColorIndex = 0
        Color0 = RGB(33, 139, 130)
        Color1 = RGB(154, 217, 219)
        Color2 = RGB(229, 219, 217)
        Color3 = RGB(152, 212, 187)
        Color4 = RGB(235, 150, 170)
        Color5 = RGB(106, 76, 147)
    

    此外,您还缺少 Color6 ... Color11 的颜色定义

    将颜色常量的赋值移动到数组ColorArr,到您已为所有 ColorXX 常量赋值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 2019-12-02
      相关资源
      最近更新 更多