在IF语句中测试Null

时间:2013-06-05 15:54:00

标签: excel vba

我从“JosieP”

获得了以下字样:Format cell based on formula value

我正在尝试测试Null单元格,因为如果遇到一个sub,则会失败。如果遇到空单元格,我想为单元格添加颜色

If IsNull(rCell) Then rCell.Interior.Color = 8不起作用,但也不会失败。

当有一个空单元时,

if clng(Left(Right(rcell.value, 2), 1)) < 3 Then rcell.Interior.ColorIndex = 10失败。

我尝试添加Not IsNull(rCell),所以我会这样做 if clng(Left(Right(rcell.value, 2), 1)) < 3 And Not IsNull(rCell) Then rcell.Interior.ColorIndex = 10但这也失败了。

Sub Format()

Dim LastRow As Long
Dim WS As Worksheet
dim rCell as range

Set WS = Sheets("sheet1")

LastRow = WS.range("F" & WS.Rows.Count).End(xlUp).Row

for each rcell in WS.range("F2:F" & LastRow).cells

 If IsNull(rCell) Then rCell.Interior.Color = 8

if clng(Left(Right(rcell.value, 2), 1)) < 3 And Not IsNull(rCell) Then rcell.Interior.ColorIndex = 10

next rcell
End Sub

1 个答案:

答案 0 :(得分:2)

Excel中的单元格值永远不会包含Null值。如果单元格为空白,则为Empty

If IsEmpty(rCell.Value) Then ...

此外,空白的单元格与包含空字符串的单元格(零长度字符串)不同。要测试这些,请使用

If Len(rCell.Value) > 0 Then ...

请注意,与IsEmpty不同,这不受类型不匹配错误的影响。如果您的单元格恰好包含错误值(例如#N/A),则会出现运行时错误13:尝试检查其长度时键入不匹配。为了更加安全,您可能需要先检查IsError(rCell.Value)