Excel vba不使用循环更改单元格范围的内部颜色

时间:2012-02-17 08:29:53

标签: vba excel-vba excel

如何使这项工作?

Range(Cells(1,1),Cells(height,width)).Interior.Color=colorArray

colorArray是包含颜色值的长度(宽度*高度)的长整数的一维数组。

上面的代码返回Type mismatch error。

For i = 1 to height
   For j = 1 to width
      t=(i-1)*width+j
      Cells(i,j).Interior.Color=colorArray(t)
   Next
Next

此代码有效,但速度太慢。我不想使用循环。

Range(Cells(1,1),Cells(height,width)).Value=colorArray

此代码使用colorArray中的颜色值填充范围,没有错误。我想要一个类似的代码来改变这个范围的单元格的背景颜色。

请帮忙。

ReDim colorArray(1 To width*height) As Long

Siddharth Rout的示例代码:

Sub Sample()
    Dim colorArray(21) 'or Dim colorArray(21) As Long/Integer
    Dim Height As Long, Width As Long

    For i = 0 To 21
        colorArray(i) = i
    Next

    Height = 10
    Width = 2

    Range(Cells(1, 1), Cells(Height, Width)).Interior.Color = colorArray

End Sub

@Siddharth Rout,我测试了这段代码,但它也返回了相同的错误“运行时错误:'13'类型不匹配”

2 个答案:

答案 0 :(得分:0)

  
    
      

上面的代码返回Type mismatch error。

    
  

John,你是如何在代码中定义colorArray的?这对我有用。

Sub Sample()
    Dim colorArray(21) 'or Dim colorArray(21) As Long/Integer
    Dim Height As Long, Width As Long

    For i = 0 To 21
        colorArray(i) = i
    Next

    Height = 10
    Width = 2

    Range(Cells(1, 1), Cells(Height, Width)).Interior.Color = colorArray

End Sub

答案 1 :(得分:0)

我相信问题在于你的电话。你应该使用:

Range(Cells(1, 1), Cells(Height, Width)).Interior.Color***Index*** = colorArray

这是我在Excel VBA中使用单元格背景颜色的经验。

-Scott