如何在 Excel 2016 VBA 中使用 If-Then

If-Then 是 VBA 最重要的控制結構。您可能每天都會使用此命令。當您想有條件地執行一個或多個語句時,請使用 If-Then 結構。可選的 Else 子句(如果包含)允許您在測試的條件不為真時執行一個或多個語句。這是一個簡單的 CheckUser 過程,重新編碼以使用 If-Then-Else 結構:

子 CheckUser2()
  UserName = InputBox(“請輸入您的姓名:”)
  如果用戶名 = “Satya Nadella” 那麼
    MsgBox(“歡迎薩蒂亞……”)
' ...[此處有更多代碼] ...
  別的
    MsgBox “對不起。只有薩蒂亞·納德拉(Satya Nadella)才能做到這一點。”
  萬一
結束子

如果-那麼示例

以下例程演示了沒有可選 Else 子句的 If-Then 結構:

子問候我()
  如果時間 < 0.5 那麼 MsgBox “早安”
結束子

GreetMe 過程使用 VBA 的 Time 函數來獲取系統時間。如果當前時間小於 0.5,則例程會顯示友好的問候語。如果 Time 大於或等於 0.5,則例程結束,什麼也沒有發生。

要在 Time 大於或等於 .5 時顯示不同的問候語,您可以在第一個之後添加另一個 If-Then 語句:

子問候我2()
  如果時間 < 0.5 那麼 MsgBox “早安”
  如果時間 >= 0.5 那麼 MsgBox “下午好”
結束子

請注意,>=(大於或等於)用於第二個 If-Then 語句。這樣可以確保覆蓋一整天。如果使用了 >(大於),則如果此過程恰好在中午 12:00 執行,則不會出現任何消息。這不太可能,但是對於這樣的重要程序,您不想冒險。

If-Then-Else 示例

解決上述問題的另一種方法是使用 Else 子句。下面是使用 If-Then-Else 結構重新編碼的相同例程:

子問候我3()
  如果時間 < 0.5 那麼 MsgBox “早安” Else _
    MsgBox “下午好”
結束子

請注意,前面的示例中使用了換行符(下劃線)。If-Then-Else 語句實際上是一個單獨的語句。VBA 提供了一種稍微不同的方式來編碼使用 End If 語句的 If-Then-Else 結構。因此,GreetMe 過程可以重寫為

子問候我4()
  如果時間 < 0.5 那麼
    MsgBox “早上好”
  別的
    MsgBox “下午好”
  萬一
結束子

事實上,您可以在 If 部分下插入任意數量的語句,在 Else 部分下插入任意數量的語句。這種語法更易於閱讀並使語句更短。

如果您需要擴展 GreetMe 例程來處理三個條件:早上、下午和晚上怎麼辦?您有兩種選擇:使用三個 If-Then 語句或使用嵌套的If-Then-Else 結構。嵌套意味著在另一個 If-Then-Else 結構中放置一個 If-Then-Else 結構。第一種方法使用三個 If-Then 語句,更簡單:

子問候我5()
 將消息調暗為字符串
 如果時間 < 0.5 那麼 Msg = “Morning”
 如果時間 >= 0.5 並且時間 < 0.75 那麼 Msg = “下午”
 如果時間 >= 0.75 那麼 Msg = “晚上”
 MsgBox “好” & Msg
結束子

使用變量添加了新的變化。Msg 變量獲得不同的文本值,具體取決於一天中的時間。MsgBox 語句顯示問候語:早上好、下午好或晚上好。

以下例程執行相同的操作,但使用 If-Then-End If 結構:

子問候我6()
  將消息調暗為字符串
  如果時間 < 0.5 那麼
    Msg = “早上好”
  萬一
  如果時間 >= 0.5 並且時間 < 0.75 那麼
    Msg = “下午”
  萬一
  如果時間 >= 0.75 那麼
    Msg = “晚上”
  萬一
  MsgBox “好” & Msg
結束子

使用 ElseIf

在前面的示例中,例程中的每個語句都被執行。一旦發現條件為真,稍微更有效的結構將退出例程。例如,在早上,程序應該顯示早安消息然後退出——而不評估其他多餘的條件。

使用這樣的小程序,您不必擔心執行速度。但是對於速度至關重要的大型應用程序,您應該了解 If-Then 結構的另一種語法。

以下是使用以下語法重寫 GreetMe 例程的方法:

子問候我7()
 將消息調暗為字符串
 如果時間 < 0.5 那麼
   Msg = “早上好”
 ElseIf Time >= 0.5 And Time < 0.75 Then
   Msg = “下午”
 別的
   Msg = “晚上”
 萬一
 MsgBox “好” & Msg
結束子

當條件為真時,VBA 執行條件語句,If 結構結束。換句話說,這個過程比前面的例子更有效。代價是代碼更難理解。

另一個 If-Then 示例

這是另一個使用 If-Then 結構的簡單形式的示例。此過程提示用戶輸入數量,然後根據用戶輸入的數量顯示適當的折扣:

Sub ShowDiscount()
  昏暗的數量一樣長
  Dim 折扣雙倍
  數量 = InputBox(“請輸入數量:”)
  如果數量 > 0 那麼折扣 = 0.1
  如果數量 >= 25 那麼折扣 = 0.15
  如果數量 >= 50 那麼折扣 = 0.2
  如果數量 >= 75 那麼折扣 = 0.25
  MsgBox “折扣:” & 折扣
結束子

請注意,此例程中的每個 If-Then 語句都被執行,並且 Discount 的值可以隨著語句的執行而改變。但是,該例程最終會顯示正確的 Discount 值,因為 If-Then 語句按 Discount 值的升序排列。

以下過程使用備用 ElseIf 語法執行相同的任務。在這種情況下,例程在為真條件執行語句後立即結束:

子 ShowDiscount2()
 昏暗的數量一樣長
 Dim 折扣雙倍
 數量 = InputBox(“請輸入數量:”)
 如果數量 > 0 且數量 < 25 那麼
  折扣 = 0.1
 ElseIf Quantity >= 25 And Quantity < 50 Then
  折扣 = 0.15
 ElseIf Quantity >= 50 And Quantity < 75 Then
  折扣 = 0.2
 ElseIf 數量 >= 75 則
  折扣 = 0.25
 萬一
 MsgBox “折扣:” & 折扣
結束子

這些多個 If-Then 結構相當繁瑣。您可能只想將 If-Then 結構用於簡單的二元決策。

Leave a Comment

HTKK 5.0.3

HTKK 5.0.3

HTKK 是稅務總局免費發布的報稅支援軟體,提供企業快速建立報稅表。了解HTKK的安裝步驟與升級功能。

有用的 Microsoft Power Query 日期函數

有用的 Microsoft Power Query 日期函數

探索 Excel 中的 Microsoft Power Query 日期函數,快速處理日期計算和操作,其中包含添加天數、提取日期部分等功能的詳細說明。

如何在 Excel 2019 中使用 3D 地圖功能

如何在 Excel 2019 中使用 3D 地圖功能

3D 地圖是 Excel 2019 中提供的令人興奮的可視化分析功能,讓你能夠在 Excel 中創建動態的 3D 地圖。探索如何利用這項技術提升數據分析的效果。

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

了解如何在 Excel 中使用 SKEW 和 SKEW.P 函數來衡量數據分佈的偏度,這對於分析數據的對稱性至關重要。

如何為 Excel 儀表板創建時間線切片器

如何為 Excel 儀表板創建時間線切片器

時間軸切片器的工作方式與標準切片器的工作方式相同,因為它允許您使用視覺選擇機製過濾數據透視表。了解如何在 Excel 中使用時間軸切片器來高效管理日期字段。

如何在 Excel 2016 中使用 XLOOKUP 函數

如何在 Excel 2016 中使用 XLOOKUP 函數

了解如何在 Excel 2016 中使用 XLOOKUP 函數,這是一個 VLOOKUP 函數的優秀替代品,具有更強大和靈活的功能!

智能表9.1.1

智能表9.1.1

Smartsheet 是一個動態工作平台,可讓您管理專案、建立工作流程以及與團隊合作。

共享點

共享點

SharePoint 是一個基於 Web 的協作系統,它使用各種工作流程應用程式、「清單」資料庫和其他 Web 元件以及安全功能來控制業務群組的協同工作。

萬年曆1.0.38/1.0.36

萬年曆1.0.38/1.0.36

萬年日曆是一款手機上的日曆檢視應用程式,可協助您在手機上快速查看陰陽日期,從而安排您的重要工作。

微軟 Outlook 2021

微軟 Outlook 2021

Microsoft Outlook 是由 Microsoft Corporation 開發的商業和生產力應用程式。