Excel 如何检查单元格值是错误还是<;0?
我试图在if语句中使用or语句,但出现了“类型不匹配”错误。Excel 如何检查单元格值是错误还是<;0?,excel,if-statement,vba,Excel,If Statement,Vba,我试图在if语句中使用or语句,但出现了“类型不匹配”错误。Cell.value
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的学生先回答,然后对代码做了进一步的改进。我同意以下答案:)