如果语句在外观错误13之内-输入错误

时间:2019-05-29 08:17:39

标签: excel vba loops if-statement

我在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)。

任何指针将不胜感激。

2 个答案:

答案 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