VBS中Sub與Function的區別

2021-06-19 18:45:23 字數 2498 閱讀 5541

在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會出現...