基于单元格值的Excel VBA到循环着色范围

时间:2015-12-16 03:57:30

标签: excel vba excel-vba loops

我有一个excel宏来为一行(从A列到E)“i”着色,从第4行开始,基于“E(i)”中的值;代码是这样的:

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

代码在对行着色时效果很好,只是它只为活动工作表的行着色。 当我试图把像

这样的东西
 Workbooks("Color row.xlsx").Sheets(arrSht(k)).Range(Cells(i, 1), Cells(i, 5)).Interior.Color = 65535

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

请帮忙!

非常感谢:)

1 个答案:

答案 0 :(得分:0)

只需稍微更改您的代码:

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

请注意,我使用了Worksheets(arrSht(k)).Activate,然后使用了With ActiveSheet