If 條件判斷





在執行程式的過程中,我們希望在某些情況下,進行判斷, 如果條件為True,那麼就進行的處理。
 
在日常生活中,也有簡單的例子可以想想。
如果我有100元,我就買大乖乖 在這個例子中,
要執行的條件就是 我要有100元才買大乖乖
但要視我有沒有100元的條件有沒又成立,才執行。
 
以下就讓我們來試著在VBA中,使用if來進行條件判斷吧。


目錄

{tocify} $title={目錄} 


單行判斷


在VBA中,如果想要和Excel If函數一樣,進行判斷處理,可使用If陳述式。
If陳述式可以寫成單行或者多行的格式,可以依照自己的需求調整。
但有時為了可讀性,也會寫成多行,以增加程式碼的可讀性。

If 判斷式寫成單行的方式

Point!

If 條件式 Then 滿足條件時進行處理



在這邊 如果寫成1行,則結尾可不加上 End If

範例

' 宣告變數num為整數
  Dim num As Integer
    
' 設定num為15
  num = 15
    
' if條件式, 若num>10 , 則顯示文字大於10的訊息窗
  If num > 10 Then MsgBox "大於10"

     執行結果如下


又或者是想要執行連續的處理,可以使用「:」冒號連接,進行連續處理。
後面也不須接End If結尾

加冒號 : 進行連續處理

Point!

If 條件式 Then 處理A:處理B:處理C

範例

' 宣告變數num為整數
  Dim num As Integer
    
' 設定num為15
  num = 15
    
' if條件式, 若num>10 , 連續執行ABC處理
  If num > 10 Then MsgBox "處理A": MsgBox "處理B": MsgBox "處理C"

    執行結果如下
      

If判斷式寫成多行的方式

Point!

If 條件式 Then

    滿足條件時進行處理

End if


但是寫成多行時,務必在要加上End If ,不然會發生錯誤。
這個部分是在新手的時候容易發生的錯誤,要記得多加注意。

範例

' 宣告變數num為整數
  Dim num As Integer
    
' 設定num為15
  num = 15
    
' if條件式, 若num>10 , 則顯示文字大於10的訊息窗
  If num > 10 Then
      MsgBox "大於10"
  End If

     執行結果如下

關於if條件判斷可參考以下連結影片




單一條件式分歧


在執行程式的過程中,我們希望在某些情況下,進行判斷, 
如果條件為True,那麼就進行True 的處理。 反之 就進行False的處理。
 
那麼當我們想要進行這樣的判斷該怎麼做呢?
這個時候在Excel VBA中,可以加入 Else 來進行多條件式分歧的判斷喔。
 
在日常生活中,也有簡單的例子可以想想。
如果我有100元,我就買大乖乖,沒有的話,就哭著找爸爸幫我買 ^O^ 在這個例子中,
True的條件就是 我有100元 - 買大乖乖
False 就是我沒有100元的情況 - 找爸爸幫我買
 
以下就讓我們來試著在VBA中,使用if來進行條件判斷吧。


程式撰寫重點

與 If條件判斷(1) 相同的是 需要在結尾加上End If 表示結束。
唯一不同的是,這次我們會在條件式中加入分歧,
中間需要加上Else 來區隔 滿足條件及無法滿足條件式的處理。

Point!

If 條件式 Then

    滿足條件時進行處理

Else

    無法滿足條件式的處理

End If


範例

' 宣告變數score為整數
  Dim score As Integer
    
' 設定score為80
  score = 80
    
' if條件式, 若score>=60 , 則顯示及格, 反之則顯示不及格
  If score >= 60 Then 
     MsgBox "及格"
  Else
     MsgBox "不及格"
  End If

關於if條件判斷可參考以下連結影片



多條件式分歧


在執行程式的過程中,我們希望在某些情況下,進行判斷, 
如果條件為True,那麼就進行True 的處理。
反之 就進行False的處理。 
但如果我們需要判斷的情況變多時,單一條件式分歧的方式顯然是不夠用。
 
這個時候在Excel VBA中,可以加入 Else If 來進行多條件式分歧的判斷喔。
 
以下就讓我們來試著在VBA中,使用if來進行條件判斷吧。


程式撰寫重點

與 If條件判斷(1) 相同的是 需要在結尾加上End If 表示結束。
這次我們會在條件式中加入多個條件分歧,
在結束之前除了需要加上Else 來區隔外, 
在中間會加上Else If 來做多條件式分歧的處理。

Point!

If 條件式1 Then

    滿足條件1時的處理

Else If 條件式2 Then

    滿足條件2時的處理

Else If 條件式3 Then

    滿足條件3時的處理

... 以此類推

Else

    無法滿足條件式的處理

End If



範例

' 宣告變數score為整數
  Dim score As Integer

' 設定score為58
  score = 58

' 多條件式分歧處理
   If score >= 90 Then 
     MsgBox "優"
  Else If score >= 80 Then 
     MsgBox "甲"
  Else If score >= 70 Then 
     MsgBox "乙"
  Else If score >= 60 Then 
     MsgBox "丙"
  Else
     MsgBox "丁"
  End If

關於if條件判斷可參考以下連結影片


多條件式分歧須留意部分

使用if多條件分歧判斷時,需要注意的是,
在寫if判斷時,要注意完成條件式的先後順序。

範例

' 宣告變數score為整數
  Dim score As Integer
    
' 設定score為90
  score = 90
    
' 多條件式分歧處理
   If score >= 60 Then 
    MsgBox "丙"
  Else If score >= 70 Then 
    MsgBox "乙"
  Else If score >= 80 Then 
    MsgBox "甲"
  Else If score >= 90 Then 
    MsgBox "優"
  Else
    MsgBox "丁"
  End If

則此時因為score為90,所以會滿足條件式1
接著if判斷就會跳出"丙"之後,結束判斷,之後的程式碼不會執行。
以上僅供範例說明,實際上撰寫時,這種撰寫方式容易發生錯誤,必須要多加注意。

關於if條件判斷注意部分可參考以下連結影片

張貼留言 (0)
較新的 較舊