Excel VBA Cell.Text vbNullString问题

我有以下代码:

If cell.Text <> vbNullString Then MsgBox "Hello" End If 

一些没有文本但包含公式的单元格仍会触发消息框。 细胞里什么也看不见,当我这样做的时候

 MsgBox cell.Text 

消息框是空的。 如果我删除公式,则不会触发消息框。 唯一的区别是我发现有问题的单元格有VarType 8,而其他的单元格是VarType 5.有些没有VarType 5的文本的单元格不会触发MsgBox。 公式格式在两种单元格types中都是相同的。

我应该怎么做才能避免触发这些单元格的消息框? (MsgBox用于说明,它实际上执行其他代码)

单元格中的空值与完全空单元格不同:

 Sub dural() With ActiveCell If .Text = "" Then If .HasFormula Then MsgBox .Address & " has a formula returning a Null" Else MsgBox .Address & " is empty or contains a Null" End If End If End With End Sub 

编辑#1:

要区分:

  • 包含返回空值的公式的单元格
  • 包含空值的单元格
  • C电池根本没有任何东西

使用:

 Sub dural() With ActiveCell If .Text = "" Then If .HasFormula Then MsgBox .Address & " has a formula returning a Null" Else MsgBox .Address & " is empty or contains a Null" If IsEmpty(ActiveCell) Then MsgBox .Address & " is totally empty" Else MsgBox .Address & " contains a Null" End If End If End If End With End Sub 

我无法在Excel中find一个名为cell的对象或属性。 所以cell.Text应该给你一个运行时错误。 你应该使用像ActieSheet.Cells(1,1).Value东西。

也就是说,为了将单元格的内容与空string进行比较,可以使用"" (空string)。 您应该将其与Value属性进行比较,而不是Text属性,因为后者是格式化的版本。