在vbscript中,有兩種procedure:sub procedure與function procedure。
一、sub procedures
vbscript的sub
procedure以sub開始,以end sub結束,中間是vbscript語句。sub procedure完成一系列的動作,但是不產生返回值。sub
procedure也可以攜帶引數(如常量、變數、或表示式)。如果sub
procedure不攜帶引數,則sub 語句也必須帶有一對空括號。
下面的這個sub
procedure例子使用了兩個內建vbscript 函式msgbox以及inputbox。inputbox用來彈出提示框,提示使用者輸入相關資訊;msgbox用以顯示計算結果。計算功能由使用者自建的function
procedure來實現,相關資訊在接下來的內容中另行討論。
**:
sub converttemp()
temp = inputbox("please enter the temperaturein degrees f.", 1)
msgbox "the temperature is " &celsius(temp) & " degrees c."
end sub 二、
function procedures
function procedure以function開始,以end function結束,中間是vbscript語句。function
procedure與sub
procedure相似,但是function
procedure可以返回值。function
procedure也可以攜帶引數(常量、變數、表示式)。如果function
procedure不攜帶引數,function語句也必須帶有一對空括號。function
procedure在語句中,通過賦值語句將值賦給funciton的名稱,由此function
procedure得到返回值。返回值的資料型別總是variant型別。
在下面的例子中,使用者定義的function celsius將華氏溫度換算為攝氏度。當在sub
procedure converttemp中用celsius(temp)呼叫這個function時,將引數「temp」傳到function中(注意:此時引數temp已經有明確的資料了)。然後在function中,進行換算工作,並將換算結果賦給function名稱「celsius」,由此換算結果就成了function的返回值,返回給呼叫它的sub procedure,並通過message語句顯示出來。
**:
sub converttemp()
temp = inputbox("please enter the temperaturein degrees f.", 1)
msgbox "the temperature is " &celsius(temp) & " degrees c."
end sub
function celsius(fdegrees)
celsius = (fdegrees - 32) * 5 / 9
end function
三、將資料傳入或傳出procedure
procedure只能通過引數獲得資料。引數名可以是任何有效的變數名稱。使用者可以用sub語句或function語句建立procedure,無論是用哪種方式建立,procedure名稱後面都必須帶有一對括號。所有的引數包括在這一對括號之中,用逗號分隔。
在下面的例子中,「fdegrees」是乙個引數,它將值傳入function「celsius」。
**:
functioncelsius(fdegrees)
celsius = (fdegrees - 32) * 5 / 9
end function
要想從procedure獲取返回值,必需使用funciton procedure。要記住:只有function procedure有返回值,sub procedure沒有返回值。
三、如何在指令碼中使用sub procedure或function procedure
function總是放置於變數賦值語句的右側,或放置於表示式中。如
**:
temp=celsius(fdegrees)
或msgbox "the celsius temperature is " &celsius(fdegrees) & " degrees."
在呼叫sub procedure時,在procedure名字後帶上所有必須的引數,引數之間用逗號隔開。call語句不是必須的,但是如果使用call語句來呼叫它,procedure名字後面的引數必須用括號括起來。下面的例子表達了兩種不同的呼叫方法:乙個使用call語句來呼叫,另乙個沒有使用call語句。兩種方法的是殊道同歸。
**:
call myproc(firstarg, secondarg)
myproc firstarg, secondarg
注意:在使用call語句呼叫sub procedure時,引數必須用括號括起來。
VBS教程 VBScript 語句 Sub 語句
宣告sub過程的名稱 引數以及構成其主體的 public default private subname arglist statements exit sub statements end sub 引數public 表示sub過程可被所有指令碼中的所有其他過程訪問。default 只與類塊中的pu...
ECMAScript中函式function型別
說起來ecmascript中上面最有意思,我想那莫過於函式了,有意思的根源,則在於函式實際上是物件。每個函式都是function型別的例項,而且都與其他引用型別一樣具有屬性和方法。由於函式是物件,因此函式名實際上也是乙個指向函式物件的指標,不會與某個函式繫結。函式通常是使用函式宣告語法定義的,如下例...
sub 與 function 的區別
sub稱為過程,function稱為函式,他們之間的唯一區別是function有返回值。完全可以把sub寫成function,只要不用function的返回值就可以了。c語言就只有函式而沒有過程,因此一般情況下都可以用function來代替sub。但這兩段 對於excel的執行位置不同。sub會出現...