和其他語言一樣,vbs提供了過程和函數機制,通過函數和過程可以優化代碼結構和實現代碼復用,
減少代碼的編寫量。
一、代碼
具體不再多說,看實例代碼。
' vbs的函數和過程 '1、過程式編程是一大編程思想,就和后來的面向對象一樣,對於代碼的復用 ' 和代碼的邏輯結構是具有非凡的意義的。 '2、現在的編程語言無論是腳本、解釋型語言、編譯型語言都具有函數和過程 ' 的概念 '3、簡單的來說我們可以把函數或者過程看成一個黑盒子,給它原料(輸入參數) ' 他們就會生成產品(輸出)。 '4、在語法上來看,函數和過程就是一段高度耦合的完成一定功能的代碼片段, ' 就是通常說的代碼塊, 或者說具名代碼塊,函數名或者過程名就是這段代 ' 碼的名稱 '5、函數返回值,過程不返回值, 但是不返回值不代表不產生輸出,這個需要注 ' 意 Option Explicit 'vbs 過程 '1、通過 sub 關鍵字表示定義過程,sub關鍵字表示具名代碼塊的開始, ' 通過 end sub 來表示代碼塊的結束 '2、語法格式 ' Sub Procedure_Name(argment 1, argment 2,.......) ' sub code block ' end sub ' ' 下面為中文描述 ' Sun 過程名(參數1, 參數2,參數3,.........) ' 過程代碼塊 ' end sub '定義簡單的過程 Sub GreetingWorld MsgBox "Hello world,This is my the very first subprocedure!" End Sub '調用過程 GreetingWorld '前面說過過程可以接受參數,下面定義接受參數的過程 '需要注意的是,因為vbs只有一種數據類型variant,所以定義過程的時候 '無需定義參數的類型 Sub SayHellow(strName) MsgBox "Hellow, " & strName & " Nice to meet you!" End Sub '調用帶參數的過程 SayHellow("volcanol") '過程調用,傳遞參數不需要用() SayHellow "volcanol" 'vbs函數 '1、vbs函數通過關鍵字 function 來指定 '2、對於vbs函數來說,其與過程的最大區別就是函數返回值,其他規則 ' 一樣 '3、在一個區別就是,即使是調用不帶參數的函數,也必須有()表示這個是 ' 函數 '4、函數的返回值,通過函數名返回,因此在函數內部需要將返回值賦值給 ' 函數名, 這里就相當於函數名是一個隱式的變量定義 '定義不帶參數的函數 Function fCycle() fCycle = 2 * 3.1415926 * 10 End Function Dim fRollCycle fRollCycle = fCycle() MsgBox "半徑為10的圓周的周長為: " & fRollCycle '定義帶參數的函數 Function fSum(arg1,arg2) fSum = arg1 + arg2 End Function '調用帶參數的函數 Dim nJackAge Dim nMikeAge nJackAge = 25 nMikeAge = 30 MsgBox "Jack and Mike's age sum is: " & fSum(nJackAge,nMikeAge) 'call語句 '在vbs中還有一個語句,用來調用過程,那就是call 語句 '對於函數和過程call語句的方式不一樣 '1、不帶參數的過程, call語句調用一樣 Call GreetingWorld Call GreetingWorld() '2、帶參數的過程 ' 帶參數的過程調用必須傳遞參數 '下面這一句不能正確執行 'Call SayHellow "Jesus" Call SayHellow("Jesus") '3、不帶參數的函數 '這樣就不能將返回的值再次使用,所以沒有什么意義 Call fCycle() '4、帶參數的函數 '同樣沒什么意義 Call fSum(10,30) 'Tips '1、對於call語句,一般不要使用,兩個原因,難打字,而且規則太復雜 '2、對於過程,就不用帶括號()調用,這樣一般一看就知道是過程 '3、對於函數,即便是不帶參數的函數調用,也用括號(),這樣一看就知道是函數調用 'Exit sub和Exit Function 語句 '1、有時候函數或過程執行到一半的時候因為已經得到了想要的結果,這個時候如果再往下 '執行未完成的部分,就會耗費資源這個時候就可以提前退出函數或過程 '2、Exit sub 語句退出過程 '3、Exit function 語句退出函數 '退出過程 Sub DisplaySum(lngArg1,lngArg2) If Not IsNumeric(lngArg1) Or Not IsNumeric(lngArg2) Then MsgBox "錯誤的數據類型,將退出執行過程" Exit Sub Else MsgBox CLng(lngArg1) + CLng(lngArg2) End If End Sub DisplaySum "volcanol", "1" DisplaySum "123","456" '退出函數 '退出函數與退出過程有一點不同的就是,在退出函數之前必須為函數設置一個默認返回值 Function fFactorial(nNum) Dim nFactorial Dim nLoop '重點要注意這個地方的防御式編程 If Not IsNumeric(nNum) Or Not VarType(nNum) = vbInteger Then '因為階乘的值大於等於1,所以返回0可以表示執行出錯,在使用這個 '函數的時候,必須先檢查返回值是否為0 fFactorial = 0 MsgBox "參數錯誤,將退出執行" Exit Function Else '必須注意,沒有初始化的變量其值 == 0 nFactorial = 1 For nLoop = 1 To CLng(nNum) nFactorial = nFactorial * nLoop Next End If fFactorial = nFactorial End Function MsgBox fFactorial("volcanol") MsgBox fFactorial(3.1415926) MsgBox fFactorial(10)
二、Tips
1、盡量不要用CALL語句
2、如果在函數中使用了Exit Function函數,那么必須要給函數一個替代值
--------------------------------------------------------------分割線---------------------------------------------------------------
1、文章均為個人原創,歡迎轉載,轉載請保留出處:https://www.cnblogs.com/volcanol/
2、獲取工控PLC、變頻器、HMI、計算機、Windows、Linux、嵌入式資料點擊:獲取資料
3、如果您覺得文章對您有幫助可轉至頁面上半部分打賞,或移步:打賞
4、或者在頁面右下角點推薦喲!!!
--------------------------------------------------------------分割線---------------------------------------------------------------