我在DO列中有布尔值或#N / A值。如果True布尔值在DO列范围内,则希望根据我的代码将r3FTop范围内的相应单元格更改为颜色。我的想法是DO2单元格对应于X5,D03对应于X2。
当我使用
运行此代码时Set rRng = Worksheets("mapOut").Range("DO2:DO2") and
Set r3FTop = Worksheets("mapOut").Range("X5")
代码工作正常(当DO2处的单元格值为True时,单元格变为橙色,而当单元格值为False或#N / A时单元格变为橙色)。但是,在每个范围(DO3和X2)中添加下一个单元格后,我仍然收到类型13错误。
我尝试了第一行的底部,它完美地为X5的单元格上色。尝试在范围中添加第二个单元格时遇到问题。
为了易于使用,我选择了对希望在屏幕上显示的单元格引用进行着色的批处理。
Sub toCheckOut()
Dim rCell As Range
Dim rRng As Range
Dim r3FTop As Range
' check out check column
Set rRng = Worksheets("mapOut").Range("DO2:DO3")
Set r3FTop = Worksheets("mapOut").Range("X5", "X2")
For Each rCell In rRng.Cells
If rRng.Value = False Then
GoTo Continue
ElseIf rRng.Value = True Then
r3FTop.Interior.Color = RGB(237, 125, 49)
Else
GoTo Continue
End If
Continue:
Next rCell
End Sub
我的实际列范围是DO2:DO90,我也有r3FTop变量的相应单元格值。我希望代码可以忽略和#N / A或False值,并且仅在找到True布尔值时更改相应的单元格颜色。
我尝试重写上面的代码,以便首先处理True布尔值,然后再处理空白(使用application.worksheet.isna(rRng)。
任何指针将不胜感激。
答案 0 :(得分:0)
尝试
Set r3FTop = Worksheets("mapOut").Range("X5, X2")
答案 1 :(得分:0)
这应该可以正常工作:
Sub toCheckOut()
Dim rCell As Range
Dim rRng As Range
Dim r3FTop As Range
Dim arr(1) as String
Dim i as Integer
i = 0
' check out check column
Set rRng = Worksheets("mapOut").Range("DO2:DO3")
arr(0) = "5"
arr(1) = "2"
'Set r3FTop = Worksheets("mapOut").Range("X5", "X2")
For Each rCell In rRng.Cells
If rRng.Value = False Then
GoTo Continue
ElseIf rRng.Value = True Then
Worksheets("mapOut").Range("X" & arr(i)).Interior.Color = RGB(237, 125, 49)
i = i + 1
Else
GoTo Continue
End If
Continue:
Next rCell
End Sub