【问题标题】:Checking for null in cells检查单元格中的空值
【发布时间】:2014-09-18 16:13:54
【问题描述】:

代码:

    Sub Usuns()
Dim wiersz, licznik As Integer
wiersz = 0
licznik = 0
Do
licznik = licznik + 1
 If Range("B" & licznik).Value Is Null Then
  Range("B" & licznik).Select
  Selection.Delete
  wiersz = wiersz + 1
 Else
  wiersz = 0
 End If
 If wiersz = 50 Then
       Exit Do
 End If
Loop
End Sub

这条线If Range("B" & licznik).Value Is Null Then 抛出此错误:

运行时错误“424”:需要对象

我该如何解决这个问题?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您不能以这种方式使用值Null

    你应该试试:

    If Range("B" & licznik).Value = ""
    

    有关Null 的小讨论请参见here

    【讨论】:

    • 请注意,如果单元格包含空字符串(即=""),Range("B" & licznik).Value = "" 将返回 True。 OP想要这个吗?我不知道。
    • @Jean-François:感谢您的提示。顺便说一句,你的回答比我的 +1 更彻底!
    【解决方案2】:

    #NULL!

    我认为您正在寻找一个单元格是否包含 Excel 错误代码 #NULL!。为此,您需要使用CVErr function:

    If Range("B" & licznik).Value = CVErr(xlErrNull)
    

    空单元格

    但是,如果您想测试空(空白)单元格,则需要使用IsEmpty function

    If IsEmpty(Range("B" & licznik).Value) Then
    

    请注意,这是严格测试空白单元格的唯一方法。其他技巧的行为方式不会相同;例如,如果单元格包含空字符串(即=""),Range("B" & licznik).Value = "" 将返回True,而IsEmpty 将返回False。取决于你想做什么。谨慎选择。

    【讨论】:

      【解决方案3】:

      我怀疑Range 需要在其父工作表对象的范围内。

      所以要么:

      ThisWorkbook.Sheets("MySheet").Range("B" & licznik).Value
      

      With ThisWorkbook.Sheets("MySheet")
          'some code...
      
          .Range("B" & licznik).Value
      
          'some more code...
      End With
      

      【讨论】:

      • 如果您没有明确指定它,Excel 会假定您要指定当前工作表(这可能很棘手,但不会引发错误)
      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多