如何在 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 結構用於簡單的二元決策。


智能表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 開發的商業和生產力應用程式。

點擊按鈕

點擊按鈕

ClickUp 是所有企業評價最高的生產力平台之一。Google、Booking.com、San Diego Padres 和 Uber 等大型企業都使用 ClickUp 來提高工作效率。

PDF-XChange 檢視器 2.5.322.10

PDF-XChange 檢視器 2.5.322.10

PDF 已成為閱讀、建立和傳送文字文件的常用格式。反過來,用於此類文件的程式數量也有所增加。PDF-XChange Viewer 是數量不斷增長的 PDF 檢視器之一。

阿帕契開放辦公室

阿帕契開放辦公室

Apache OpenOffice 提供了一整套可與 Microsoft 365 競爭的 Office 應用程序,尤其是 Excel、PowerPoint 和 Word。它允許您更有效地管理您的項目,並支援多種文件格式。

下載 iTaxviewer 1.8.7

下載 iTaxviewer 1.8.7

iTaxViewer軟體是當今最受歡迎的XML檔案讀取軟體。該軟體是用於讀取稅務總局 XML 格式電子報稅單的應用程式。

硝基 PDF 閱讀器

硝基 PDF 閱讀器

Nitro PDF Reader 是一款方便的 PDF 編輯器,涵蓋了大多數人每天使用 PDF 文件執行的所有基本任務。

福昕閱讀器12

福昕閱讀器12

Foxit Reader主要是一個PDF閱讀器,還允許您建立PDF文件、對其進行簽名、編輯以及添加註釋。它適用於作業系統,有 Microsoft Office 軟體包中各種程式的插件。