Excel 如何检查单元格值是错误还是<;0?

Excel 如何检查单元格值是错误还是<;0?,excel,if-statement,vba,Excel,If Statement,Vba,我试图在if语句中使用or语句,但出现了“类型不匹配”错误。Cell.value

我试图在if语句中使用or语句,但出现了“类型不匹配”错误。
Cell.value<0
WorksheetFunction.IsError(Cell.value)
都返回true或false,对吗?那么,什么是类型不匹配

谢谢

For Each Cell In RatioThU
     If Cell.Value < 0 Or WorksheetFunction.IsError(Cell.Value) Then '<--TYPE MISMATCH!
        Cell.EntireRow.Select
           Selection.Font.StrikeThrough = True
     End If
Next
用于RatioThU中的每个单元格

如果Cell.Value<0或WorksheetFunction.IsError(Cell.Value),则“选定范围内单元格中的错误值导致单元格上的类型不匹配。Value=0检查

首先检查错误条件,然后检查单元格值,如

If WorksheetFunction.IsError(Cell.Value) = "True" Then
     Cell.EntireRow.Select
         Selection.Font.Strikethrough = True
ElseIf Cell.Value = 0 Then   
    Cell.EntireRow.Select
       Selection.Font.Strikethrough = True
End If

你知道如何单步执行代码并添加手表吗?这对于调试此类错误以及值得研究的问题非常有用。

选定范围内单元格中的错误值导致单元格上的类型不匹配。值=0检查

首先检查错误条件,然后检查单元格值,如

If WorksheetFunction.IsError(Cell.Value) = "True" Then
     Cell.EntireRow.Select
         Selection.Font.Strikethrough = True
ElseIf Cell.Value = 0 Then   
    Cell.EntireRow.Select
       Selection.Font.Strikethrough = True
End If

你知道如何单步执行代码并添加手表吗?这对于调试此类错误以及值得研究的问题非常有用。

必须将测试分开:

For Each cell In RatioThU
     If WorksheetFunction.IsError(cell) Then
        cell.EntireRow.Font.Strikethrough = True
    Else
        If cell.Value < 0 Then
            cell.EntireRow.Font.Strikethrough = True
        End If
     End If
Next
用于RatioThU中的每个单元格
如果工作表function.IsError(单元格),则
cell.EntireRow.Font.Strikethrough=True
其他的
如果单元格值<0,则
cell.EntireRow.Font.Strikethrough=True
如果结束
如果结束
下一个

注意,选择是不必要的。

您必须将测试分开:

For Each cell In RatioThU
     If WorksheetFunction.IsError(cell) Then
        cell.EntireRow.Font.Strikethrough = True
    Else
        If cell.Value < 0 Then
            cell.EntireRow.Font.Strikethrough = True
        End If
     End If
Next
用于RatioThU中的每个单元格
如果工作表function.IsError(单元格),则
cell.EntireRow.Font.Strikethrough=True
其他的
如果单元格值<0,则
cell.EntireRow.Font.Strikethrough=True
如果结束
如果结束
下一个

请注意,选择是不必要的。

Excel将在将这两个术语与Or组合之前对其进行评估。如果单元格值出错
cell.value<0
将返回类型不匹配。如果出现错误则需要
删除行
否则
如果单元格.Value<0则
删除行
结束如果
结束如果
托尼,你的解释很完美。非常感谢你!!!!Excel将在将这两个术语与Or组合之前对其进行评估。如果单元格值出错
cell.value<0
将返回类型不匹配。如果出现错误则需要
删除行
否则
如果单元格.Value<0则
删除行
结束如果
结束如果
托尼,你的解释很完美。非常感谢你!!!!当然,我没有注意那部分。选择将导致较大循环中的性能问题。当然,我没有注意这一部分。选择将导致较大循环中的性能问题。在这种情况下,单步执行代码没有用处,因为if语句中使用的两个参数之一(<0和isError)导致了问题。但是谢谢你的提示,它真的很有用!您的答案和Gary的非常相似,但我选择Gary的答案是因为代码使用<0而不是=0。但是谢谢!!我一定是在调试时改变的。Gary的学生先回答,然后对代码做了进一步的改进。我同意将标记为答案:)在这种情况下,单步执行代码没有用处,因为if语句中使用的两个参数之一(<0和isError)导致了问题。但是谢谢你的提示,它真的很有用!您的答案和Gary的非常相似,但我选择Gary的答案是因为代码使用<0而不是=0。但是谢谢!!我一定是在调试时改变的。Gary的学生先回答,然后对代码做了进一步的改进。我同意以下答案:)