Excel 如何使用VBA在一个范围内设置背景色?

Excel 如何使用VBA在一个范围内设置背景色?,excel,vba,Excel,Vba,这是我正在尝试的代码。但它显示类型不匹配错误。 我不想使用for循环来设置单个单元格的颜色 Function bgColor() Dim MyArray(1, 3) As Variant MyArray(0, 0) = 37 MyArray(0, 1) = 12 MyArray(0, 2) = 15 MyArray(0, 3) = 18 Sheets("Data").Range("A1:D1").Interior.ColorIndex = MyAr

这是我正在尝试的代码。但它显示类型不匹配错误。 我不想使用for循环来设置单个单元格的颜色

Function bgColor()
    Dim MyArray(1, 3) As Variant
    MyArray(0, 0) = 37
    MyArray(0, 1) = 12
    MyArray(0, 2) = 15
    MyArray(0, 3) = 18
    Sheets("Data").Range("A1:D1").Interior.ColorIndex = MyArray
End Function

即使在屏幕更新打开的情况下,通过5000种颜色的数组循环并将它们写入单元格所需的时间也远远少于一秒钟。是否还有其他原因使您不能对循环使用

Sub Test()

    Dim MyArray(0, 4999) As Variant
    Dim i As Long

    For i = 0 To 4999
        MyArray(0, i) = WorksheetFunction.RandBetween(1, 40)
    Next i

    For i = 0 To 4999
        Sheets("Data").Cells(i + 1, 1).Interior.ColorIndex = MyArray(0, i)
    Next i

End Sub

您已经在逐个分配数组。跳过这一步,一个一个地设置每个单元格。我很确定你不能用
函数
更改单元格格式,而是尝试作为
子函数
?我可以看到,但据我所知,你不会回避单独的任务,逐行或带数组的循环。只能使用数组设置值-不能这样分配颜色。@HariDas文档通常不会说明不能执行的操作。如果没有提到通过数组设置颜色,则无法直接使用墨水。彩色!(+1)