我有一个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':对象不支持该行的”属性或方法“。 我不知道应该放什么,以便为指定数组中的每个工作表着色单元格。
请帮忙!
非常感谢:)
答案 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
。