TOP

VBA-第 7.2 课。条件 (Conditions)

除了使用 If...Then...Else 和 Select Case 条件进行检查之外,我们还可以使用以下检查:

  • 数据类型比较(函数 IsNumeric、IsDate、IsEmpty、运算符 Is Nothing)
  • 变量类型比较(VarType 函数)
  • 比较文本提要(运算符 Like)

  • 数据类型检查

    如果值是数字,IsNumeric(我们在上一课中使用的函数)返回 TRUE (TRUE),如果 - 不是数字,则返回 FALSE (FALSE):

    If IsNumeric(Range("A1")) = True Then '如果价值是数字...
    

    下面的代码产生与前一个相同的效果(我们不需要 include = True 因为构造本身就是一个条件检查):

    If IsNumeric(Range("A1")) = True Then '如果价值是数字...
    

    如果我们想检查一个值是否不是数字,我们可以通过两种方式来实现:

    If IsNumeric(Range("A1")) = False Then '如果值不是数字...
    
    If Not IsNumeric(Range("A1")) Then '如果值不是数字...
    

    我们再看几个与 IsNumeric 类似的函数:

    If IsDate(Range("A1")) Then '如果值为日期...
    
    If IsEmpty(Range("A1")) Then '如果为空...
    
    If var_object Is Nothing Then '如果未定义对象...
    

    检查变量的类型

    要根据变量的类型执行命令,我们需要使用 VarType 函数。

    一旦我们输入“=”符号,变量类型列表就会出现:

    If VarType(my_variable) = vbInteger Then 'IF my_variable 是变量类型 Integer ...
    

    常量的值:

    持续的 价值
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'IF my_variable 是变量类型 Integer ...
     '等同于:
     If VarType(my_variable) = 2 Then 'IF my_variable 是变量类型 Integer ...
    

    比较文本源 (Like)

    早些时候我们使用了以下代码片段:

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> 正确 (TRUE)
    

    在这种情况下,两个磁带是相同的,但是如果我们想检查变量是否包含值“12345”;如果不考虑其他字符,那么我们应该使用 Like 命令,以及我们要查找的值前后的运算符 *(星号)。

    运算符 *(星号)被解析为:任何字符或字符集:

    my_variable = "Example 12345"
    
    If my_variable Like "*12345*" Then '=> 正确 (TRUE)
    

    运算符 #(哈希)被解码为:从 0 到 9 的任何单个数字字符:

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> 正确 (TRUE)
    

    操作员? (问号)被破译为:任何单个字符:

    my_variable = "Example 12345"
    
    If my_variable Like "?xample?1234?" Then '=> 正确 (TRUE)
    

    我们还可以以相同的方式使用特定字符或一组字符:

    my_variable = "Example 12345"
    
    If my_variable Like "[DEF]xample 1234[4-7]" Then '=> 正确 (TRUE)
    

    操作员! (感叹号)添加在 [ 之后意味着:任何未括在方括号中的字符:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> 正确 (TRUE)
    
    在这种情况下,大写字符不等同于相同的小写字符。如果不想区分大小写字符,则只需在模块开头写入 Option Compare Text 命令即可。