我有幾個作業表。有 3 個基于作業表名稱的子程式 CALL 選項。我試過重新排列和 If, If Not, Else and ElseIf, Exit Sub, End If 等。如果 CALL 完成并回傳,它不可避免地會到達最后一個 CALL(這里 ...呼叫作業。我還試圖找出多選的 SELECT CASE 函式。CBI、Fire、LEA 和 InCase 的 CALL 作業完美。問題是當我有一個不同名稱的作業表時......我希望 CALL 轉到 IsolOther。
Sub DetermineTabs()
'DETERMINE WHICH SUBROUTINE TO CALL BASED ON SHEET (TAB) NAME
Dim newTab As String
newTab = ActiveSheet.Name
'Call appropriate Category processing routine
'Call IsolNamesOnly Subroutine if ActiveSheet is named ... CBI
If newTab = "CBI" Then Call IsolNamesOnly Else
'Call IsolNamesOnly Subroutine if ActiveSheet is named ... Fire
If newTab = "Fire" Then Call IsolNamesOnly Else
'Call IsolNamesOnly Subroutine if ActiveSheet is named ... LEA
If newTab = "LEA" Then Call IsolNamesOnly Else
'Call IsolInCase Subroutine if ActiveSheet is named ... InCase
If newTab = "InCase" Then Call IsolInCase Else
'Call IsolOther Subroutine if ActiveSheet is named ... anything else
If newTab <> "CBI" Or newTab <> "Fire" Or newTab <> "LEA" Or newTab <> "InCase" Then Call IsolOther Else
End Sub
我也試過“如果不是 newTab = "CBI" 或 newTab = "Fire" 或 newTab = "LEA" 或 newTab = "InCase" 然后呼叫 IsolOther Else”(不帶引號作為最后一個 IF 行的替代),以及將最后一行設為單獨的 If Not/Else,但我失敗了。如果沒有找到前 4 張紙,我想執行該 CALL 和 End Sub。我查看了問題 60781118、51274411、24684092 和其他 Google 查詢。幫助 。. . 請。
uj5u.com熱心網友回復:
考慮SELECT...CASE并結合多個條件與Case Else條件。
Select Case newTab
Case "CBI", "LEA", "Fire"
Call IsolNamesOnly
Case "InCase"
Call IsolInCase
Case Else
Call IsolOther
End Select
uj5u.com熱心網友回復:
Select Case 對比 If...Then...Else
- 該呼叫宣告被認為是過時了。
- 選擇 Case 陳述句
- If...Then...Else 陳述句
作為使用Select Case statement(在這種情況下要走的方式)的替代方法,您可以考慮使用If...Then...Else statement.
如果您以以下(流行的)方式撰寫它,...
Sub DetermineTabsIfThenElse()
Dim NewTab As String: NewTab = ActiveSheet.Name
If NewTab = "CBI" Or NewTab = "Fire" Or NewTab = "LEA" Then
IsolNamesOnly
ElseIf NewTab = "InCase" Then
IsolInCase
Else
IsolOther
End If
End Sub
... 即使作業表名稱是CBI,字串Fire和LEA也將被評估,而在Select Case版本中,陳述句將立即退出。
要模仿Select Case版本,您可以按以下方式重寫代碼...
Sub DetermineTabsIfThenElseSelectCase()
Dim NewTab As String: NewTab = ActiveSheet.Name
If NewTab = "CBI" Then
IsolNamesOnly
ElseIf NewTab = "Fire" Then
IsolNamesOnly
ElseIf NewTab = "LEA" Then
IsolNamesOnly
ElseIf NewTab = "InCase" Then
IsolInCase
Else
IsolOther
End If
End Sub
...這將使它更長(更多的“重復”打字)和更少的可讀性。
在實踐中,我從未注意到任何版本的執行時間有任何差異。
為了證明先前的“評估”點,例如替換"LEA"為一個數字,使作業CBI表處于活動狀態并運行每個代碼。第一個If版本將引發型別不匹配錯誤,因為它NewTab被宣告為字串,而其他兩個版本不會“注意到”它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/384769.html
上一篇:在excel中記錄動態變化的值
