VBA - 标识空字符串



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

我尝试使用IsNullIsEmpty,以及测试以查看它是否等同于vbNullString但它仍然显示为False

如何识别此字符串是否Null

"看似空白但长度为 2 个字符"的字符串值称为空格,而不是空白,不是null,不是

使用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 的字符串。

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

相关内容

  • 没有找到相关文章

最新更新