2015-12-16 166 views
0

我有一个Excel宏,可以根据“E(i)”中的值从第4行开始为行(从列A到E)“i”着色;代码如下所示:Excel VBA基于单元格值循环着色范围

Dim i As Integer 
Dim arrSht, k 
arrSht = Array("1. Asia", "2. Asia", "3. Asia", _ 
    "4. Asia", "6. Europe", "7. Europe") 

For k = LBound(arrSht) To UBound(arrSht) 
    With Worksheets(arrSht(k)) 
     For i = 4 To 11 
      If Cells(i, 5).Value >= 0.25 Or _ 
       Cells(i, 5).Value <= -0.25 Then 
      Range(Cells(i, 1), Cells(i, 5)).Interior.Color = 65535 
      End If 
     Next i 
    End With 
Next k 

End Sub 

该代码在着色行时工作正常,只是它仅为活动工作表着色。 当我试图把类似

我得到的“运行时错误‘438’:对象不支持此属性或方法”该行。 我不知道我应该放什么,以便它为指定数组中的每个工作表着色单元格。

请帮忙!

感谢很多:)

+0

在每个细胞和范围前放上一个'.'。 '.Cells(i,5).Value> = 0.25或' –

回答

0

只需稍微改变你这样的代码:我已经使用Worksheets(arrSht(k)).Activate然后With ActiveSheet

Dim i As Integer 
Dim arrSht, k 
arrSht = Array("1. Asia", "2. Asia") ', "3. Asia", "4. Asia", "6. Europe", "7. Europe") 

For k = LBound(arrSht) To UBound(arrSht) 
    Worksheets(arrSht(k)).Activate 
    With ActiveSheet 
     For i = 4 To 11 
      If Cells(i, 5).Value >= 0.25 Or _ 
       Cells(i, 5).Value <= -0.25 Then 
      Range(Cells(i, 1), Cells(i, 5)).Interior.Color = 65535 
      End If 
     Next i 
    End With 
Next k 

通知。

+0

这完美无缺!非常感谢!! – vbanoob27

+0

为什么downvote? – zedfoxus

+0

不是我..我已经upvote它 – vbanoob27