2
我有三個子例程,有時會連續運行,有時會單獨運行,但會使用相同的參數(「TestNumber」)。我原來的代碼如下所示:自動檢測被自變量調用VS單獨調用子程序?
Sub Main1()
Dim TestNumber As String
TestNumber = InputBox("Please enter TestNumber")
' Some codes running on TestNumber
' Prompt users whether to continue to Main2
Dim Continue As String
Continue = MsgBox("Continue to Main2?", vbYesNo)
If Continue = vbYes Then
Call Main2
Else
End If
End Sub
Sub Main2() ' Similar to Main1, just that it will prompt if user wants to continue to Main3
Dim TestNumber As String
TestNumber = InputBox("Please enter TestNumber")
' Some codes running on TestNumber
Dim Continue As String
Continue = MsgBox("Continue to Main3?"), vbYesNo)
If Continue = vbYes Then
Call Main3
Else
End If
End Sub
Sub Main3() ' The last call of the series
Dim TestNumber As String
TestNumber = InputBox("Please enter TestNumber")
'Some codes running on TestNumber
End Sub
然後,我認爲這是一個有點麻煩和危險爲每個呼叫重新進入TestNumber,所以我改變了我的代碼是這樣的:
Sub Main1()
Dim TestNumber As String
TestNumber = InputBox("Please enter TestNumber")
' Some codes running on TestNumber
' Prompt users whether to continue to Main2
Dim Continue As String
Continue = MsgBox("Continue to Main2?", vbYesNo)
If Continue = vbYes Then
Call Main2(TestNumber)
Else
End If
End Sub
Sub Main2(TestNumber As String) ' Similar to Main1, just that it will prompt if user wants to continue to Main3
If TestNumber = "" Then
TestNumber = InputBox("Please enter TestNumber")
Else
End If
' Some codes running on TestNumber
Dim Continue As String
Continue = MsgBox("Continue to Main3?"), vbYesNo)
If Continue = vbYes Then
Call Main3(TestNumber)
Else
End If
End Sub
Sub Main3(TestNumber As String) ' The last call of the series
If TestNumber = "" Then
TestNumber = InputBox("Please enter TestNumber")
Else
End If
' Some codes running on TestNumber
End Sub
如果我從Main1開始一直工作到Main3,這很好。 但是,如果我從Main2或Main3開始,兩個腳本都不會運行。相反,系統會提示運行哪個子程序。
有沒有辦法使子程序自動檢測它是用參數調用還是分別調用?
非常感謝你=]第一種方法似乎雖然不工作。它不運行,但又提示用戶運行哪個子程序。 –
@MthetheHHui你如何準確運行它? – Rory
'如果TestNumber <> 0然後TestNumber = 1',則用1代替任何需要的值,前提是兩個分支的操作過程實際上並不相同。 – Vegard