VBA中的Is函数,你知道几个?
1,IsNumeric 函数
返回指示表达式是否可评估为数值的“Boolean”值。
语法
IsNumeric (表达式)
必需的 expression参数是包含数值表达式或字符串 表达式的 Variant。
备注
如果整个 表达式 被识别为数字,则“IsNumeric”返回“True”,否则,返回“False”。
如果 表达式 是 数据表达式,则“IsNumeric”返回“False”。
示例:
此示例使用“IsNumeric”函数确定变量是否可评估为数值。
Dim MyVar, MyCheck
MyVar = '53' ' Assign value.
MyCheck = IsNumeric(MyVar) ' Returns True.
MyVar = '459.95' ' Assign value.
MyCheck = IsNumeric(MyVar) ' Returns True.
MyVar = '45 Help' ' Assign value.
MyCheck = IsNumeric(MyVar) ' Returns False.
2,IsNull 函数
返回指示 表达式是否包含无效数据 (Null) 的 Boolean 值。
语法
IsNull (表达式)
必需的 expression参数是包含数值表达式或字符串 表达式的 Variant。
备注
如果 expression 为 Null,则 IsNull 将返回 True;否则 IsNull 将返回 False。如果 expression 由多个 变量组成,则任何成员变量中的 Null 将导致为整个表达式返回 True。
Null 值指示 Variant 未包含任何有效数据。Null 与 Empty 不同,其指示尚未初始化变量。它与有时称为空字符串的零长度字符串 ('') 也不同。
使用 IsNull 函数可确定表达式是否包含 Null 值。有些情况下,您可能希望计算结果为 True 的表达式,如 If Var = Null 和 If Var <> Null 始终为 False 。这是因为包含 Null 的任何表达式本身为 Null, 因此 为 False。
示例:
此示例使用 IsNull 函数确定变量是否包含 Null。
Dim MyVar, MyCheck
MyCheck = IsNull(MyVar) ' Returns False.
MyVar = ''
MyCheck = IsNull(MyVar) ' Returns False.
MyVar = Null
MyCheck = IsNull(MyVar) ' Returns True.
3,IsEmpty 函数
返回一个指示是否已初始化 变量的 Boolean 值。
语法
IsEmpty (表达式)
必需的 expression 参数是 包含数值或字符串 表达式的 Variant。但是,由于 IsEmpty 用于确定是否初始化单个变量,因此 expression 参数通常是单个变量名称。
备注
IsEmpty 在变量未初始化或显式设置为 Empty 时返回 True;否则,返回 False。如果 expression 包含多个变量,则始终返回 False。IsEmpty 仅返回 变量的有用信息。
示例:
此示例使用 IsEmpty 函数确定是否已初始化变量。
Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar) ' Returns True.
MyVar = Null ' Assign Null.
MyCheck = IsEmpty(MyVar) ' Returns False.
MyVar = Empty ' Assign Empty.
MyCheck = IsEmpty(MyVar) ' Returns True.
4,IsDate 函数
如果表达式是日期或可识别为有效日期或时间,则返回 True;否则,它返回 False。
语法
IsDate (表达式)
必需的 expression 参数是一 个 Variant,其中包含可识别为日期或时间的日期表达式或字符串表达式。
备注
在Windows中,有效日期范围为 A.D.100 年 1 月 1 日到 9999 年 12 月 31 日;这些范围因操作系统而异。
示例:
此示例使用 IsDate 函数确定表达式是否可转换为日期。
Dim MyVar, MyCheck
MyVar = '04/28/2014' ' Assign valid date value.
MyCheck = IsDate(MyVar) ' Returns True.
MyVar = 'April 28, 2014' ' Assign valid date value.
MyCheck = IsDate(MyVar) ' Returns True.
MyVar = '13/32/2014' ' Assign invalid date value.
MyCheck = IsDate(MyVar) ' Returns False.
MyVar = '04.28.14' ' Assign valid time value.
MyCheck = IsDate(MyVar) ' Returns True.
MyVar = '04.28.2014' ' Assign invalid time value.
MyCheck = IsDate(MyVar) ' Returns False.
5,IsArray 函数
返回指示 变量 是否是 数组的 Boolean 值。
语法
IsArray (varname)
必需的 varname 参数 是 指定 变量的标识符。
备注
“IsArray”在变量是数组时返回“True”;否则返回“False”。“IsArray” 对包含数组的变量尤其有用
示例:
此示例使用 IsArray 函数检查变量是否是数组。
Dim MyArray(1 To 5) As Integer, YourArray, MyCheck ' Declare array variables.
YourArray = Array(1, 2, 3) ' Use Array function.
MyCheck = IsArray(MyArray) ' Returns True.
MyCheck = IsArray(YourArray) ' Returns True.
6,IsObject 函数
返回一个指示 标识符是否表示某个对象的 变量的 Boolean 值。
语法
IsObject (标识符)
IsObject 仅在确定 Variant 是否为 VarType vbObject 时有用。如果 Variant 实际 引用对象 (或一) 对象,或者包含 Nothing ,则可能发生 此情况。
如果 identifier 是一个使用 Object 类型或任何有效 类类型声明的变量,或者如果 identifier 是 VarType****vbObject 的 Variant 或是用户定义的对象,则 IsObject 会返回 True;否则会返回 False。
即使变量已被设置为 Nothing,IsObject 也会返回 True。使用错误捕获以确保对象引用是有效的。
备注
此函数在代码的错误处理部分中很有用,这些代码部分不确定对象是否在发生错误之前实例化,例如,您希望关闭它。
示例:
此示例使用 IsObject 函数来确定标识符是否表示一个对象变量。MyObject 和 YourObject 是同一类型的对象变量。它们是仅用于说明用途的通用名称。
Dim MyInt As Integer ' Declare variables.
Dim YourObject, MyCheck ' Note: Default variable type is Variant.
Dim MyObject As Object
Set YourObject = MyObject ' Assign an object reference.
MyCheck = IsObject(YourObject) ' Returns True.
MyCheck = IsObject(MyInt) ' Returns False.
MyCheck = IsObject(Nothing) ' Returns True.
MyCheck = IsObject(Empty) ' Returns False.
MyCheck = IsObject(Null) ' Returns False.
7,IsError 函数
返回一个 Boolean 值,指示 表达式是否为错误值。
语法
IsError (表达式)
必需的 expression 参数 可以是任何有效的表达式。
备注
错误值是通过使用 CVErr 函数将实数转换为错误值而创建的。IsError 函数用于确定 数值表达式是否表示错误。如果 expression 参数指示错误,则 IsError 返回 True;否则,返回 False。
示例:
此示例使用 IsError 函数检查数值表达式是否错误值。CVErr 函数用于从用户定义的函数返回 Error Variant。假定是返回错误值的用户定义函数过程;例如,使用 语句 分配的返回值, UserFunction UserFunction = CVErr(32767) 其中 32767 是用户定义的数字。
Dim ReturnVal, MyCheck
ReturnVal = UserFunction()
MyCheck = IsError(ReturnVal) ' Returns True.
8,IsMissing 函数
返回一 个 Boolean 值,该值指示是否向过程传递了可选 Variant 参数。
语法
IsMissing (argname)
必需的 argname 参数包含可选 Variant 过程参数的名称。
备注
使用 IsMissing 函数可检测调用过程时是否提供了可选 Variant 参数。如果未为指定参数传递任何值,则 IsMissing 将返回 True;否则将返回 False。
如果 IsMissing 针对某参数返回 True,则在其他代码中使用缺少参数可能导致用户定义的错误。
如果对 ParamArray 参数使用 IsMissing,则将始终返回 False。若要检测空 ParamArray,请测试以查看 数组的上限是否低于下限。
IsMissing 对简单数据类型(如 Integer 或 Double)无效,因为与 Variants 不同,它们没有针对“缺少”标志位的设置。为此,键入的可选参数的语法允许您指定默认值。如果在调用过程时省略该参数,则参数将具有此默认值,如以下示例所示。
Sub MySub(Optional MyVar As String = 'specialvalue')
If MyVar = 'specialvalue' Then
' MyVar was omitted.
Else
...
End Sub
在许多情况下,如果用户在函数调用中省略测试,则可以通过使默认值等于要包含的值来完全 If MyVar MyVar 省略测试。这使您的代码简洁高效。
示例:
此示例使用 IsMissing 函数检查是否已将可选参数传递到用户定义的过程。请注意, Optional 参数现在可具有默认值和 Variant 之外的类型。
Dim ReturnValue
' The following statements call the user-defined function procedure.
ReturnValue = ReturnTwice() ' Returns Null.
ReturnValue = ReturnTwice(2) ' Returns 4.
' Function procedure definition.
Function ReturnTwice(Optional A)
If IsMissing(A) Then
' If argument is missing, return a Null.
ReturnTwice = Null
Else
' If argument is present, return twice the value.
ReturnTwice = A * 2
End If
End Function
