【问题标题】:Excel Validation - IsEmpty or #CALC!?Excel 验证 - IsEmpty 或 #CALC!?
【发布时间】:2022-01-12 09:42:57
【问题描述】:

我正在尝试向使用列表配置的单元格 D16 添加一些验证。

通常,此单元格将显示供用户选择的选项列表。但是,如果他们没有向另一个工作表添加值,则此列表将显示 #CALC!

目前我有:

Set Check = ThisWorkbook.Sheets("Home").Range("D16")
If IsEmpty(Check.Value) Then
    MsgBox "Warning...."
End If

这在未选择任何选项时有效,但如果用户尚未将选项添加到另一张工作表,则列表提供 #CALC! 并且如果用户选择检查不起作用。

选项的值总是超过10个字符,所以我试过了:

   If (Len(Check.Value) < 10) Then
       MsgBox "Warning...."
   End If

但这不起作用。

有没有办法检查空白条目或#CALC!或检查单元格中内容的长度,是否包括#CALC! ?

谢谢

【问题讨论】:

  • Value() 属性返回一个 Variant。这可能是一个数字、字符串或其他一些东西,其中一个是特殊的错误类型。使用IsError()函数来测试一个值是否属于这种类型(错误2050)。
  • 感谢您的帮助:)
  • @DS_London 如果您可以创建它作为答案,我会接受它。

标签: excel validation


【解决方案1】:

有没有办法检查空白条目或#CALC!或检查 单元格中内容的长度,是否包括#CALC! ?

RangeValue() 属性返回Variant。这是一种数据类型,可以是数字、字符串、数组或其他几种类型的数据。如果电子表格单元格中有错误(显示为 #NUM!、#VALUE!、#CALC! 等),则这是一个单独的错误类型,可以使用 IsError() 进行测试。

每个错误都有一个与之相关的数字:#CALC!这是2050。如果你想检查错误是专门#CALC!您可以将该值与CvErr(2050) 进行比较,或者使用CStr() 转换为字符串表示:

例如

Sub TestError()
    Dim v as Variant
    v = CVErr(2050)
    
    If IsError(v) Then
        Debug.Print CStr(v)
    End If
End Sub

哪个打印(在立即窗口中):

Error 2050

【讨论】:

  • 谢谢 :) 这有助于解决问题。
猜你喜欢
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多