我的一个单元格似乎是空白,但长度为2个字符。我将字符串复制到this网站,它已将其标识为空字符串。
我尝试使用IsNull
和IsEmpty
,并进行测试以查看它是否等同于vbNullString
,但仍以False
的形式出现。 / p>
如何识别此字符串为Null
?
答案 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)
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