如何将范围内每个单元格的颜色索引加载到数组中?

时间:2017-11-30 11:45:53

标签: arrays excel vba excel-vba

我正在尝试将范围(A1:A30)转储到数组中。当我提取范围的单元格值时,它工作正常。

 aM = Sheet2.Range("A1:A30").Value

但是,我需要该范围内每个单元格的颜色索引。我知道,我可以通过循环遍历该范围内的每个单元格来完成此操作。为了提高效率,我不想使用循环选项。

我可以使用以下代码/替代方法实现此目的吗?

Dim aM() As Variant
aM = Sheet2.Range("A1:A30").Interior.ColorIndex
For i = LBound(aM) To UBound(aM)
    Debug.Print aM(i, 1)
Next i 

1 个答案:

答案 0 :(得分:1)

我可以使用以下代码/替代方法实现此目的吗?

enter image description here

你必须循环。即使有可能像am = Range.Interior.ColorIndex这样做,也会在其后面实现隐藏循环。在aM = Sheet2.Range("A1:A30").Value中还有一个循环实现,你只是看不到它。

一般来说,加载300K颜色需要2秒钟:

Public Sub TestMe()

    Dim i               As Long
    Dim aM(300000)      As Long

    For i = LBound(aM) To UBound(aM)
        aM(i) = Cells(i + 1, 1).Interior.ColorIndex
    Next i

End Sub