VBA-识别空字符串

时间:2019-01-15 17:32:48

标签: excel vba null

我的一个单元格似乎是空白,但长度为2个字符。我将字符串复制到this网站,它已将其标识为空字符串。

我尝试使用IsNullIsEmpty,并进行测试以查看它是否等同于vbNullString,但仍以False的形式出现。 / p>

如何识别此字符串为Null

2 个答案:

答案 0 :(得分:4)

一个字符串值“看起来是空白,但长度为2个字符”,据说是空白,而不是空白,不是 null ,不是 empty

使用Trim函数(或它的Trim$字符串型小兄弟)去除前导/后缀空格字符,然后针对vbNullString(或""测试结果):

If Trim$(value) = vbNullString Then

Trim函数不会剥离不间断空格。您可以编写一个执行以下操作的函数:

Public Function TrimStripNBSP(ByVal value As String) As String
    TrimStripNBSP = Trim$(Replace(value, Chr$(160), Chr$(32)))
End Function

这将不间断空格替换为ASCII 32(“正常”空格字符),然后对其进行修剪并返回结果。

现在您可以使用它来针对vbNullString(或"")进行测试:

If TrimStripNBSP(value) = vbNullString Then

IsEmpty函数只能与Variant一起使用(无论如何,在给定Variant的情况下仅返回有意义的结果),以确定该变体是否包含值。

IsNull函数在Excel托管的VBA中的使用极为有限,因此不需要,因为在Excel工作表中Null不会有任何事情-尤其是没有长度的字符串之2。

答案 1 :(得分:1)

Chr(160)问题

160是非突破性空间的代码。

让我们说这个单元格是A1。

在任何单元格中写入=CODE(A1),在另一个单元格中(例如旁边)写入=CODE(MID(A1,2,1))

结果是字符的代码编号(例如a和b)。

现在在VBA中,您可以使用:

If Cells(1, 1) = Chr(a) & Chr(b) Then

End If 

或例如

If Left(Cells(1, 1), 1) = Chr(160) then

End If