再次是我。
我有一个嵌套的for循环,查看一个范围内的每个单元格然后移动到下一列(需要嵌套,即使是2,因为稍后我有300列和行要检查(这是一次测试尝试) )宏检查单元格的值,然后根据值更改单元格的颜色。然而,当我运行代码时,宏将颜色索引36的所有内容都与单元格的值不相关。任何人都可以解释原因吗?
Dim i12 as long
Dim i9 as long
i12 = 3
For i12 = i12 To 4
i12 = i12
i9 = 21
For i9 = i9 To 71
i9 = i9
If 0 < Cells(i9, i12) < 1 Then
Cells(i9, i12).Select
Selection.Interior.ColorIndex = 36
ElseIf Cells(i9, i12) < 0 Then
Cells(i9, i12).Select
Selection.Interior.ColorIndex = 3
Else
End If
Next i9
Next i12
我认为这个问题来自0 < Cells(i9, i12) < 1
,可能是因为VBA无法应对这个等式,但我不确定。
感谢您提供的任何帮助。
答案 0 :(得分:3)
是的,你不能这样做,If 0 < Cells(i9, i12) < 1 Then
。
您需要两个条件,
If Cells(i9, i12) > 0 And Cells(i9, i12) < 1 Then
您也不需要选择单元格:
替换
Cells(i9, i12).Select
Selection.Interior.ColorIndex = 3
与
Cells(i9, i12).Interior.ColorIndex = 3
(当您看到Select
后跟.Selection
时,您可以删除这两个字词。)
答案 1 :(得分:0)
AndyG说,你需要在IF语句中定义条件两次,并使用Interior.ColorIndex来设置颜色。