将颜色值的范围存储为VBA中的数组

时间:2015-08-19 15:27:58

标签: excel vba excel-vba

我想从excel中的表中获取颜色值,在重新组织表时将它们存储为数组,然后将颜色值重新放回到表中。以下代码适用于值和数字格式,但不适用于颜色值。 任何帮助将不胜感激。

Sub Colors()
    Dim cArray As Variant
    Set Rng = Range("A1: T300")
    ReDim cArray(1 To Rng.Rows.Count, 1 To Rng.Columns.Count)
    For i = 1 To Rng.Rows.Count
        For j = 1 To Rng.Columns.Count
            cArray(i, j) = Rng(i, j).ColorValue
        Next j
    Next i
    Call SortTable
    Rng.ColorValue = cArray
End Sub

1 个答案:

答案 0 :(得分:1)

我不确定.ColorValue是VBA认可的内容。相反,请使用cArray(i,j) = rng(i,j).Interior.ColorIndex

然后,当您想要设置单元格的颜色时,只需执行Cells(1,1).Interior.ColorIndex = [whatever]

Here's a非常详细的页面讨论了ColorIndex和HTML / Hex / RGB等价物/相关事物。

编辑:我以为你想要背景颜色。如果你想要字体颜色,它只是cArray(i,j) = rng(i,j).Font.Color