分享

VBA中零值、空值等的区别

 scwencai 2017-08-05

        给某人讲Is Nothing 与 Null 及 “”的区别,说了之后感觉不够完整,百度了一下。从CSDN抄了一段,献给菜鸟。


Option Explicit

Private Sub Command1_Click()

   Dim A As Variant

   Dim B As String

   Dim C As Integer

   Dim D As Object

 

   Debug.Print A = Empty     '一个尚未初始化的variant变量是empty

   A = Null: Debug.Print A   '一个variant变量可以赋值为Null

   Debug.Print IsNull(A)     '判断一个varint变量是否为Null

   Debug.Print B = ''        '判断一个string变量为''(空字符串)

   Debug.Print C             '定义一个integer变量后,它自动初始化为0

   Debug.Print D Is Nothing  '定义一个object变量后,它自动初始化为nothing

    

End Sub

 

        'A 等于 Empty, 因为尚未初始化的“不定型变量”都等于 Empty。

        '但如果检测 A = '' 或 A = 0, 也都可以得到 True 值。

 

        'B 等于 '', 未初始化或初始化为''的“非固定长度字符串变量”都等于''。

        '但请注意'B<> Null。

 

        'C 等于 0, 这个还有问题吗?

 

         'D 等于 Nothing, 尚未初始化的或用set设置为nothing的对象变量都等于 Nothing,

'但请不要使用 D = Nothing , 而要使用 D Is Nothing 来判断 D 是否等于 Nothing,

'因为判断对象是否相等的符号是 Is 不是 = 。

 

         '最令人迷惑的地方是 Null 这个保留字,请看以下语句:

         'A = Null

         'Print A = Null

         'Print A <> Null

         '结果都是输出 Null(不是 True 也不是 False),这是因为任何一个运算式只要含有 Null,'则该运算式就等于 Null, 

        '实际上想要判断某一数据是否为 Null 绝对不能使用:

        'If A = Null Then ' 永远都会得到 Null

        '而要使用:

        'If IsNull(A) Then

 

        '哪一种数据会等于 Null 呢?除了含有 Null 运算式之外, 就是没有输入任何数据的'“数据字段”(在数据库中) 会等于 Null。

        '后补:B 的默认值是 vbNullString(这个才是空字符串),不是 ''(这个叫零长度的字符串),尤其在调用 API 时是不能搞混的。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多