【问题标题】:Check cell value for white space or blank only检查单元格值是否有空格或仅空白
【发布时间】:2019-02-01 19:34:00
【问题描述】:

我正在验证我的单元格值。单元格值有 5 个空格或空格。我正在尝试检查单元格是否为空白或仅包含空格且没有文本或其他字符。但它不起作用,单元格值真的是空白还是空白?:

if Trim(range("A1").Value & vbNullString) = vbNullString then
    'stop here and do something
end if

【问题讨论】:

  • If Application.Trim(Range("A1"))="" Then
  • @ScottCraner 我现在什至不确定它是空白还是空白,如果我手动放置空格,它可以工作,但如果我复制所谓的空白的实际值,它就不起作用。
  • If Application.Trim(Application.Clean(Range("A1")))="" Then
  • 这两个都不是。这个空白是我从 word 文档复制到 excel 中的文本框表格。
  • 可以this 吗? (Trim 不会删除 ASCII 160 个字符)

标签: excel vba


【解决方案1】:

有很多空白字符(“肉眼”最不可见),例如当您使用 SHIFT+ENTER 来分隔单元格时(如 HTML 中的

我建议你做的是传递给一个函数来检查单元格或文本框的所有字符。

您可以从 excel 公式中调用该函数,例如:=Verify(A1),或使用另一个 SUB。

每次您的约会 = 0 时,您只有实数空格和空值,而不是字母、数字、特殊字符、制表符或换行符。

Public Function Verify(FullWord)

    Appointments = 0

    For X = 1 To Len(FullWord)
        Letter = Mid(FullWord, X, 1)

        Select Case Letter

           'Real NULL
           Case Is = ""
           Case Is = vbNullChar  'Chr(0)  Character having a value of 0.
           Case Is = vbNullString    'String having value 0   Not the same as a zero-length string (""); used for calling external procedures. Cannot be passed to any DLL's

           'Real SPACE
           Case Is = " "

           'Other things
           Case Is = vbCr    'Chr(13) Carriage return character
             Appointments = Appointments + 1
           Case Is = vbLf    'Chr(10) Linefeed character
             Appointments = Appointments + 1
           Case Is = vbCrLf  'Chr(13) + Chr(10)   Carriage return - linefeed combination
             Appointments = Appointments + 1
           Case Is = vbNewLine   'Chr(13) + Chr(10)   New line character
             Appointments = Appointments + 1
           Case Is = vbTab   'Chr(9)  Tab character
             Appointments = Appointments + 1
           Case Is = vbBack  'Chr(8)  Backspace character
             Appointments = Appointments + 1
           Case Is = vbFormFeed  'Chr(12) Word VBA Manual - manual page break ?
             Appointments = Appointments + 1
           Case Is = vbVerticalTab   'Chr(11) Word VBA Manual - manual line break (Shift + Enter)
             Appointments = Appointments + 1

           Case Else

           Appointments = Appointments + 1

        End Select
     Next

     Verify = Appointments

End Function

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 2017-09-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多