四时宝库

程序员的知识宝库

VBA中的“如果”(IF)(vba if 或者)

在生活中,我们要对各种各样的事情做出判断,如果明天天气好,我们就去爬山,否则就在家宅着,如果熬汤有点咸,我们就加点盐,淡了就加点水。程序编写的时候也会遇到许多需要判断的需求。

条件结构

在VBA编写程序时常常会用到"如果","就","否则",这就是程序中的条件结构。

VBA中的条件判断结构代码: if…Then …Else…End if

if 满足条件 Then 
		如果满足上面条件),做这些事情
Else
		(否则,除了上面的事情外)做其它事情
End If

例子1:如果当前工作簿的工作表中单元格A1是空的,就给它填充绿色,否则填充为红色。

Sub Test1()
Dim Sht1 As Worksheet
Set Sht1 = ThisWorkbook.Worksheets("Sheet1")
'清空Sheet1单元格A1的状态
    Sht1.Range("A1").Clear
    '如果当前工作簿中Sheet1为空
    If Sht1.Range("A1") = "" Then
        '填充成绿色
        Sht1.Range("A1").Interior.Color = vbGreen
    Else
        '否则填充成红色
        Sht1.Range("A1").Interior.Color = vbGreen
    End If
End Sub

在有些时候,单一的判断无法满足我们的需求,我们会遇到多重判断的情况。

if 满足该特定情况1 Then
		做这些事情
Else if 满足特定情况2 Then
		做这些事情
Else
		如果前面那些特定情况都不满足,则做这些事情
End If

这段程序的核心结构,其中Elseif 的个数可以根据实际需要增加或减少。

例子2:

  • 如果今天是星期一,就吃热干面,
  • 如果今天是周二,就吃麻辣香锅,
  • 如果今天是周三,就吃套餐,
  • 如果今天是周四,就吃河粉,
  • 如果今天是周五,就吃烤鱼,
  • 如果今天是周末,就休息了。
Sub Test2()
    Dim TodayDate As Date, TodayWeekDay As Integer
   
    TodayDate = Format(Now(), "yyyy/mm/dd") '获取当前日期
    TodayWeekDay = Application.WeekDay(TodayDate, 2) '通过Excel内置函数得到今天是周几

    If TodayWeekDay = 1 Then
        MsgBox "吃热干面吧"        
    ElseIf TodayWeekDay = 2 Then
        MsgBox "吃麻辣香锅吧"
    ElseIf TodayWeekDay = 3 Then
        MsgBox "吃套餐吧"
    ElseIf TodayWeekDay = 4 Then
        MsgBox "吃炒河粉吧"
    ElseIf TodayWeekDay = 5 Then
        MsgBox "吃烤鱼吧"
    Else
        MsgBox "休息日"
    End If  
End Sub

注:Msgbox 是VBA编写中控制弹出提示框的方法,后面会详细讲解。

分支结构

我们在例子2中介绍了条件结构中的多重判断情况,如果我们想完成同样的功能,还可以用下面的VBA结构来表达:

Select Case …End Select

我们会发现Select Case …End Select 结构也能完成If … Then …End If结构的任务.

Select Case 表达式或变量
		Case 表达式结果或变量在第1组数据中
    		执行这里的代码
    Case 表达式结果或变量在第2组数据中
    		执行这里的代码
    Case 表达式结果或变量在第2组数据中
    		执行这里的代码
   	Case Else 如果表达式结果或变量不在“上述结果中”
    		执行这里的代码
End Select
Sub Test3()
    Dim TodayDate As Date
    Dim TodayWeekDay As Integer 
    
    TodayDate = Format(Now(), "yyyy/mm/dd") '获取当前日期
    TodayWeekDay = Application.WeekDay(TodayDate, 2) '通过Excel内置函数得到今天是周几
    Select Case TodayWeekDay
        Case 1
        MsgBox "吃热干面吧"
        Case 2
        MsgBox "吃麻辣香锅吧"
        Case 3
        MsgBox "吃套餐吧"
        Case 4
        MsgBox "吃炒河粉吧"
        Case 5
        MsgBox "吃烤鱼吧"
        Case Else
        MsgBox "休息日"
    End Select    
End Sub

大家可以试敲一敲代码,练习一下,VBA无他,孰能生巧,多敲代码。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接