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
属性,因为后者是格式化的版本。