一 VBA常用的系统空值关键字:nothing ,empty ,null
1.1 三者区别
- empty 有效的空值,如0 "",比较常用
- null 无效的控制,比如二选一之外的空
- nothing 对象变量的空值, 语法是 object is nothing 而不是用 =nothing
1.2 empty null nothing 三者的区别
- 参考文章:https://www.cnblogs.com/lys_013/archive/2013/04/16/3024229.html
- Empty、Null和Nothing都可为Variant变量赋值
- 声明时系统会设Variant变量为Empty
- 如果要将Variant变量设为无效数据可用Null
- 如果不再使用对象变量就应尽快将之设成Nothing以利系统释放资源。
1.3 举例 因为range().find() 返回的是 对象,所以得用 is nothing
Sub test5032()
Dim a As Range
in1 = InputBox("请输入一个电影名")
Set a = Range("a1:a15").Find(in1)
If a Is Nothing Then
Range("A" & 1 + Range("a65536").End(xlUp).Row).Value = in1
Else
MsgBox "内容重复了"
End If
End Sub
二 VBA常用的系统空值关键字:err
2.1 err相关关键字
- 常用的报错处理相关的函数
- iserror()
- 变量=err , 然后判断 err.number= int
2.2 和 false 没啥关系
- 而 true false 是一对 bool值
- false和err没啥关系
2.3 err=err.bumber 的具体值
- 首先,err不是布尔值,并不是err=0 表示没错误, err=1 表示是出错
- err 其实是 err.number
- err=0 表示 err.number=0 没出出错
- err.number有很多出错数字
2.4 举例
- 使用查找,匹配函数时,要先进行错误处理
- 但同时要对错误值和空值有区分,if err=0
- 如果需要处理错误值,则要可能要先加一个语句 on error resume next
- 这里如果判断 if a=err 没啥意义
Sub aa31()
On Error Resume Next
in1 = Int(InputBox("请输入1个要查的数字"))
a = WorksheetFunction.Match(in1, Array(1, 2, 3, 4, 5), 0)
If Err = 0 Then
Debug.Print a
Else
Debug.Print "没找到!"
End If
End Sub