Excel 查找错误13中的If语句-类型错误
我在DO列中有布尔值或#N/A值。如果真布尔值在DO列范围内,我希望根据我的代码将r3FTop范围内的相应单元格更改为颜色。我的想法是DO2单元对应于X5,D03对应于X2 当我用Excel 查找错误13中的If语句-类型错误,excel,vba,loops,if-statement,Excel,Vba,Loops,If Statement,我在DO列中有布尔值或#N/A值。如果真布尔值在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时,单元格不会变为
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值,只在找到真布尔值时更改相应的单元格颜色
我已经尝试重写上面的代码,以便首先处理真正的布尔值以及处理空格(使用application.sheet.isna(rRng))
任何提示都将不胜感激。试试这个
Set r3FTop = Worksheets("mapOut").Range("X5, X2")
试试这个
Set r3FTop = Worksheets("mapOut").Range("X5, X2")
现在应该可以这样做了:
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
现在应该可以这样做了:
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
我认为问题在于,当您尝试使用一个单元格时,VBA知道要为哪个单元格着色,但当您尝试添加多个单元格时,VBA不知道要为哪个单元格着色,因为两个单元格中都没有提供映射。在这种情况下,我建议使用数组。使用条件格式是否会更容易?请尝试我的代码e回答,它应该可以工作。如果不注释它抛出错误的那行。@Gareth..我认为映射不是常数…就像2乘5…所以条件格式工作不起作用,因为没有为条件格式制定公式的选项。@Gareth我确实走了条件格式的路线,但是,我需要能够灵活地在初始橙色着色后,为单元格添加额外的背景色。这需要在瞬间完成,因此我没有时间清除每个单元格的条件格式,然后更改单元格颜色。我认为问题在于,当您尝试使用一个单元格时,VBA知道确切的单元格颜色,但当您正在尝试添加多个单元格,VBA不知道要为哪个单元格着色,因为这两个单元格中都没有提供映射。在这种情况下,我建议使用数组。使用条件格式不是更容易吗?试试我回答的代码,应该可以。如果不注释它引发错误的行。@Gareth..我认为映射不正确常量…如5后的2…因此条件格式设置不能作为制定条件格式设置公式的选项。@Gareth我确实采用了条件格式设置,但我需要灵活性,以便在初始橙色着色后,能够向单元格添加额外的背景色。这需要在一瞬间,因此我没有时间清除每个单元格的条件格式,然后更改单元格颜色。感谢您抽出时间为我的问题提供另一个答案。尽管如此,我仍然遇到相同的不匹配错误:如果rRng.Value=False,那么我认为即使是#N/A value应该由我的if语句的else部分拾取…感谢您抽出时间为我的问题提供另一个答案。尽管如此,我仍然在以下位置遇到相同的不匹配错误:if rRng.Value=False,那么我认为即使是#N/A值也应该由我的if语句的else部分拾取。