关于VBA的0、""(空字符串)、Null、Empty、与 Nothing 的区别-福哥
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


关于VBA的0、""(空字符串)、Null、Empty、与 Nothing 的区别

发表时间:2017/8/2 9:37:28 评论(1) 浏览(48283)  评论 | 加入收藏 | 复制
   
摘 要:关于VBA的0、""(空字符串)、Null、Empty、与 Nothing 的区别
正 文:

给某人讲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 时是

不能搞混的


Access软件网交流QQ群(群号:198465573)
 
 相关文章
判断空值或空字符串五法比较  【江羽  2009/9/10】
0、""(空字串)、Null、Empty、与 Nothing 的区...  【风行  2012/6/8】
access中null和空字符串的区别  【小赵  2013/5/6】
一个区别空值和空字符串(“”)的小例子  【李子  2017/2/24】
判断变量是否被初始化--内置函数:IsEmpty()  【杨雪  2017/4/17】
常见问答
技术分类
相关资源
文章搜索
关于作者

福哥

文章分类

文章存档

友情链接