VB腳本從入門到精通.doc_第1頁(yè)
VB腳本從入門到精通.doc_第2頁(yè)
VB腳本從入門到精通.doc_第3頁(yè)
VB腳本從入門到精通.doc_第4頁(yè)
VB腳本從入門到精通.doc_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

什么是 VBScript?Microsoft Visual Basic Scripting Edition 是程序開(kāi)發(fā)語(yǔ)言 Visual Basic 家族的最新成員,它將靈活的腳本應(yīng)用于更廣泛的領(lǐng)域,包括 Microsoft Internet Explorer 中的 Web 客戶機(jī)腳本和 Microsoft Internet Information Service 中的 Web 服務(wù)器腳本。易學(xué)易用如果您已了解 Visual Basic 或 Visual Basic for Applications,就會(huì)很快熟悉 VBScript。即使您沒(méi)有學(xué)過(guò) Visual Basic,只要學(xué)會(huì) VBScript,就能夠使用所有的 Visual Basic 語(yǔ)言進(jìn)行程序設(shè)計(jì)。雖然您可以從本教程的幾個(gè) Web 頁(yè)面中學(xué)習(xí) VBscript,但是本教程并沒(méi)有告訴您如何編程。要學(xué)習(xí)編程,請(qǐng)閱讀由 Microsoft Press 出版的Step by Step。ActiveX 腳本VBScript 使用 ActiveX(R)腳本與宿主應(yīng)用程序?qū)υ?。使?ActiveX Script,瀏覽器和其他宿主應(yīng)用程序不再需要每個(gè)腳本部件的特殊集成代碼。ActiveX腳本使宿主可以編譯 Script、獲取和調(diào)用入口點(diǎn)及管理開(kāi)發(fā)者可用的命名空間。通過(guò) ActiveX Script,語(yǔ)言廠商可以建立標(biāo)準(zhǔn)腳本運(yùn)行時(shí)語(yǔ)言。Microsoft 將提供 VBScript 的運(yùn)行時(shí)支持。Microsoft 正在與多個(gè) Internet 組一起定義 ActiveX腳本標(biāo)準(zhǔn)以使腳本引擎可以互換。ActiveX腳本可用在 Microsoft(R) Internet Explorer 和 Microsoft(R) Internet Information Service 中。其他應(yīng)用程序和瀏覽器中的 VBScript作為開(kāi)發(fā)者,您可以在您的產(chǎn)品中免費(fèi)使用 VBScript 源實(shí)現(xiàn)程序。Microsoft 為 32 位 Windows(R) API、16 位 Windows API 和 Macintosh(R) 提供 VBscript 的二進(jìn)制實(shí)現(xiàn)程序。VBScript 與 World Wide Web 瀏覽器集成在一起。VBScript 和 ActiveX腳本也可以在其他應(yīng)用程序中作為普通腳本語(yǔ)言使用。在 HTML 頁(yè)面中添加 VBScript 代碼SCRIPT 元素用于將 VBScript 代碼添加到 HTML 頁(yè)面中。 標(biāo)記VBScript 代碼寫在成對(duì)的 標(biāo)記之間。例如,以下代碼為一個(gè)測(cè)試傳遞日期的過(guò)程: 2 End Function-代碼的開(kāi)始和結(jié)束部分都有 標(biāo)記。LANGUAGE 屬性用于指定所使用的腳本語(yǔ)言。由于瀏覽器能夠使用多種腳本語(yǔ)言,所以必須在此指定所使用的腳本語(yǔ)言。注意 CanDeliver 函數(shù)被嵌入在注釋標(biāo)記()中。這樣能夠避免不能識(shí)別 標(biāo)記的瀏覽器將代碼顯示在頁(yè)面中。因?yàn)橐陨鲜纠且粋€(gè)通用函數(shù)(不依賴于任何窗體控件),所以可以將其包含在頁(yè)面的 HEAD 部分: 訂購(gòu) 2 End Function-.SCRIPT 塊可以出現(xiàn)在 HTML 頁(yè)面的任何地方(BODY 或 HEAD 部分之中)。然而最好將所有的一般目標(biāo)腳本代碼放在 HEAD 部分中,以使所有腳本代碼集中放置。這樣可以確保在 BODY 部分調(diào)用代碼之前所有腳本代碼都被讀取并解碼。上述規(guī)則的一個(gè)值得注意的例外情況是,在窗體中提供內(nèi)部代碼以響應(yīng)窗體中對(duì)象的事件。例如,以下示例在窗體中嵌入腳本代碼以響應(yīng)窗體中按鈕的單擊事件: 測(cè)試按鈕事件 MsgBox 按鈕被單擊! 大多數(shù)腳本代碼在 Sub 或 Function 過(guò)程中,僅在其他代碼要調(diào)用它時(shí)執(zhí)行。然而,也可以將 VBScript 代碼放在過(guò)程之外、SCRIPT 塊之中。這類代碼僅在 HTML 頁(yè)面加載時(shí)執(zhí)行一次。這樣就可以在加載 Web 頁(yè)面時(shí)初始化數(shù)據(jù)或動(dòng)態(tài)地改變頁(yè)面的外觀。VBScript 數(shù)據(jù)類型VBScript 只有一種數(shù)據(jù)類型,稱為 Variant。Variant 是一種特殊的數(shù)據(jù)類型,根據(jù)使用的方式,它可以包含不同類別的信息。因?yàn)?Variant 是 VBScript 中唯一的數(shù)據(jù)類型,所以它也是 VBScript 中所有函數(shù)的返回值的數(shù)據(jù)類型。最簡(jiǎn)單的 Variant 可以包含數(shù)字或字符串信息。Variant 用于數(shù)字上下文中時(shí)作為數(shù)字處理,用于字符串上下文中時(shí)作為字符串處理。這就是說(shuō),如果使用看起來(lái)象是數(shù)字的數(shù)據(jù),則 VBScript 會(huì)假定其為數(shù)字并以適用于數(shù)字的方式處理。與此類似,如果使用的數(shù)據(jù)只可能是字符串,則 VBScript 將按字符串處理。也可以將數(shù)字包含在引號(hào) ( ) 中使其成為字符串。Variant 子類型除簡(jiǎn)單數(shù)字或字符串以外,Variant 可以進(jìn)一步區(qū)分?jǐn)?shù)值信息的特定含義。例如使用數(shù)值信息表示日期或時(shí)間。此類數(shù)據(jù)在與其他日期或時(shí)間數(shù)據(jù)一起使用時(shí),結(jié)果也總是表示為日期或時(shí)間。從 Boolean 值到浮點(diǎn)數(shù),數(shù)值信息是多種多樣的。Variant 包含的數(shù)值信息類型稱為子類型。大多數(shù)情況下,可將所需的數(shù)據(jù)放進(jìn) Variant 中,而 Variant 也會(huì)按照最適用于其包含的數(shù)據(jù)的方式進(jìn)行操作。下表顯示 Variant 包含的數(shù)據(jù)子類型:子類型描述Empty未初始化的 Variant。對(duì)于數(shù)值變量,值為 0;對(duì)于字符串變量,值為零長(zhǎng)度字符串 ()。Null不包含任何有效數(shù)據(jù)的 Variant。Boolean包含 True 或 False。Byte包含 0 到 255 之間的整數(shù)。Integer包含 -32,768 到 32,767 之間的整數(shù)。Currency-922,337,203,685,477.5808 到 922,337,203,685,477.5807。Long包含 -2,147,483,648 到 2,147,483,647 之間的整數(shù)。Single包含單精度浮點(diǎn)數(shù),負(fù)數(shù)范圍從 -3.402823E38 到 -1.401298E-45,正數(shù)范圍從 1.401298E-45 到 3.402823E38。Double包含雙精度浮點(diǎn)數(shù),負(fù)數(shù)范圍從 -1.79769313486232E308 到 -4.94065645841247E-324,正數(shù)范圍從 4.94065645841247E-324 到 1.79769313486232E308。Date (Time)包含表示日期的數(shù)字,日期范圍從公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。String包含變長(zhǎng)字符串,最大長(zhǎng)度可為 20 億個(gè)字符。Object包含對(duì)象。Error包含錯(cuò)誤號(hào)。您可以使用轉(zhuǎn)換函數(shù)來(lái)轉(zhuǎn)換數(shù)據(jù)的子類型。另外,可使用 VarType函數(shù)返回?cái)?shù)據(jù)的 Variant 子類型。VBScript 變量變量是一種使用方便的占位符,用于引用計(jì)算機(jī)內(nèi)存地址,該地址可以存儲(chǔ)腳本運(yùn)行時(shí)可更改的程序信息。例如,可以創(chuàng)建一個(gè)名為 ClickCount 的變量來(lái)存儲(chǔ)用戶單擊 Web 頁(yè)面上某個(gè)對(duì)象的次數(shù)。使用變量并不需要了解變量在計(jì)算機(jī)內(nèi)存中的地址,只要通過(guò)變量名引用變量就可以查看或更改變量的值。在 VBScript 中只有一個(gè)基本數(shù)據(jù)類型,即 Variant,因此所有變量的數(shù)據(jù)類型都是 Variant。聲明變量聲明變量的一種方式是使用 Dim 語(yǔ)句、Public 語(yǔ)句和 Private 語(yǔ)句在腳本中顯式聲明變量。例如: Dim DegreesFahrenheit聲明多個(gè)變量時(shí),使用逗號(hào)分隔變量。例如: Dim Top, Bottom, Left, Right另一種方式是通過(guò)直接在腳本中使用變量名這一簡(jiǎn)單方式隱式聲明變量。這通常不是一個(gè)好習(xí)慣,因?yàn)檫@樣有時(shí)會(huì)由于變量名被拼錯(cuò)而導(dǎo)致在運(yùn)行腳本時(shí)出現(xiàn)意外的結(jié)果。因此,最好使用 Option Explicit 語(yǔ)句顯式聲明所有變量,并將其作為腳本的第一條語(yǔ)句。命名規(guī)則變量命名必須遵循 VBScript 的標(biāo)準(zhǔn)命名規(guī)則。變量命名必須遵循: 第一個(gè)字符必須是字母。 不能包含嵌入的句點(diǎn)。 長(zhǎng)度不能超過(guò) 255 個(gè)字符。 在被聲明的作用域內(nèi)必須唯一。 變量的作用域與存活期變量的作用域由聲明它的位置決定。如果在過(guò)程中聲明變量,則只有該過(guò)程中的代碼可以訪問(wèn)或更改變量值,此時(shí)變量具有局部作用域并被稱為過(guò)程級(jí)變量。如果在過(guò)程之外聲明變量,則該變量可以被腳本中所有過(guò)程所識(shí)別,稱為 Script 級(jí)變量,具有腳本級(jí)作用域。變量存在的時(shí)間稱為存活期。Script 級(jí)變量的存活期從被聲明的一刻起,直到腳本運(yùn)行結(jié)束。對(duì)于過(guò)程級(jí)變量,其存活期僅是該過(guò)程運(yùn)行的時(shí)間,該過(guò)程結(jié)束后,變量隨之消失。在執(zhí)行過(guò)程時(shí),局部變量是理想的臨時(shí)存儲(chǔ)空間。可以在不同過(guò)程中使用同名的局部變量,這是因?yàn)槊總€(gè)局部變量只被聲明它的過(guò)程識(shí)別。給變量賦值創(chuàng)建如下形式的表達(dá)式給變量賦值:變量在表達(dá)式左邊,要賦的值在表達(dá)式右邊。例如: B = 200標(biāo)量變量和數(shù)組變量多數(shù)情況下,只需為聲明的變量賦一個(gè)值。只包含一個(gè)值的變量被稱為標(biāo)量變量。有時(shí)候,將多個(gè)相關(guān)值賦給一個(gè)變量更為方便,因此可以創(chuàng)建包含一系列值的變量,稱為數(shù)組變量。數(shù)組變量和標(biāo)量變量是以相同的方式聲明的,唯一的區(qū)別是聲明數(shù)組變量時(shí)變量名后面帶有括號(hào) ( )。下例聲明了一個(gè)包含 11 個(gè)元素的一維數(shù)組: Dim A(10)雖然括號(hào)中顯示的數(shù)字是 10,但由于在 VBScript 中所有數(shù)組都是基于 0 的,所以這個(gè)數(shù)組實(shí)際上包含 11 個(gè)元素。在基于 0 的數(shù)組中,數(shù)組元素的數(shù)目總是括號(hào)中顯示的數(shù)目加 1。這種數(shù)組被稱為固定大小的數(shù)組。在數(shù)組中使用索引為數(shù)組的每個(gè)元素賦值。從 0 到 10,將數(shù)據(jù)賦給數(shù)組的元素,如下所示: A(0) = 256 A(1) = 324 A(2) = 100 . . . A(10) = 55與此類似,使用索引可以檢索到所需的數(shù)組元素的數(shù)據(jù)。例如: . . . SomeVariable = A(8) . . . 數(shù)組并不僅限于一維。數(shù)組的維數(shù)最大可以為 60(盡管大多數(shù)人不能理解超過(guò) 3 或 4 的維數(shù))。聲明多維數(shù)組時(shí)用逗號(hào)分隔括號(hào)中每個(gè)表示數(shù)組大小的數(shù)字。在下例中,MyTable 變量是一個(gè)有 6 行和 11 列的二維數(shù)組: Dim MyTable(5, 10)在二維數(shù)組中,括號(hào)中第一個(gè)數(shù)字表示行的數(shù)目,第二個(gè)數(shù)字表示列的數(shù)目。也可以聲明動(dòng)態(tài)數(shù)組,即在運(yùn)行腳本時(shí)大小發(fā)生變化的數(shù)組。對(duì)數(shù)組的最初聲明使用 Dim 語(yǔ)句或 ReDim 語(yǔ)句。但是對(duì)于動(dòng)態(tài)數(shù)組,括號(hào)中不包含任何數(shù)字。例如: Dim MyArray() ReDim AnotherArray()要使用動(dòng)態(tài)數(shù)組,必須隨后使用 ReDim 確定維數(shù)和每一維的大小。在下例中,ReDim 將動(dòng)態(tài)數(shù)組的初始大小設(shè)置為 25,而后面的 ReDim 語(yǔ)句將數(shù)組的大小重新調(diào)整為 30,同時(shí)使用 Preserve 關(guān)鍵字在重新調(diào)整大小時(shí)保留數(shù)組的內(nèi)容。 ReDim MyArray(25) . . . ReDim Preserve MyArray(30)重新調(diào)整動(dòng)態(tài)數(shù)組大小的次數(shù)是沒(méi)有任何限制的,將數(shù)組的大小調(diào)小時(shí),將會(huì)丟失被刪除元素的數(shù)據(jù)。VBScript 常數(shù)常數(shù)是具有一定含義的名稱,用于代替數(shù)字或字符串,其值從不改變。VBScript 定義了許多內(nèi)部常數(shù)。詳細(xì)信息,請(qǐng)參閱 VBScript 語(yǔ)言參考。創(chuàng)建常數(shù)您可以使用 Const 語(yǔ)句在 VBScript 中創(chuàng)建用戶自定義常數(shù)。使用 Const 語(yǔ)句可以創(chuàng)建名稱具有一定含義的字符串型或數(shù)值型常數(shù),并給它們賦原義值。例如: Const MyString = 這是一個(gè)字符串。Const MyAge = 49請(qǐng)注意字符串文字包含在兩個(gè)引號(hào) ( ) 之間。這是區(qū)分字符串型常數(shù)和數(shù)值型常數(shù)的最明顯的方法。日期文字和時(shí)間文字包含在兩個(gè)井號(hào) (#) 之間。例如: Const CutoffDate = #6-1-97#最好采用一個(gè)命名方案以區(qū)分常數(shù)和變量。這樣可以避免在運(yùn)行腳本時(shí)對(duì)常數(shù)重新賦值。例如,可以使用“vb”或“con”作常數(shù)名的前綴,或?qū)⒊?shù)名的所有字母大寫。將常數(shù)和變量區(qū)分開(kāi)可以在開(kāi)發(fā)復(fù)雜的腳本時(shí)避免混亂。VBScript 運(yùn)算符VBScript 有一套完整的運(yùn)算符,包括算術(shù)運(yùn)算符、比較運(yùn)算符、連接運(yùn)算符和邏輯運(yùn)算符。運(yùn)算符優(yōu)先級(jí)當(dāng)表達(dá)式包含多個(gè)運(yùn)算符時(shí),將按預(yù)定順序計(jì)算每一部分,這個(gè)順序被稱為運(yùn)算符優(yōu)先級(jí)??梢允褂美ㄌ?hào)越過(guò)這種優(yōu)先級(jí)順序,強(qiáng)制首先計(jì)算表達(dá)式的某些部分。運(yùn)算時(shí),總是先執(zhí)行括號(hào)中的運(yùn)算符,然后再執(zhí)行括號(hào)外的運(yùn)算符。但是,在括號(hào)中仍遵循標(biāo)準(zhǔn)運(yùn)算符優(yōu)先級(jí)。當(dāng)表達(dá)式包含多種運(yùn)算符時(shí),首先計(jì)算算術(shù)運(yùn)算符,然后計(jì)算比較運(yùn)算符,最后計(jì)算邏輯運(yùn)算符。所有比較運(yùn)算符的優(yōu)先級(jí)相同,即按照從左到右的順序計(jì)算比較運(yùn)算符。算術(shù)運(yùn)算符和邏輯運(yùn)算符的優(yōu)先級(jí)如下所示:算術(shù)運(yùn)算符比較運(yùn)算符邏輯運(yùn)算符描述符號(hào)描述符號(hào)描述符號(hào)求冪等于=邏輯非Not負(fù)號(hào)-不等于邏輯與And乘*小于邏輯異或Xor整除小于等于=邏輯隱含Imp加+對(duì)象引用比較Is 減- 字符串連接& 當(dāng)乘號(hào)與除號(hào)同時(shí)出現(xiàn)在一個(gè)表達(dá)式中時(shí),按從左到右的順序計(jì)算乘、除運(yùn)算符。同樣當(dāng)加與減同時(shí)出現(xiàn)在一個(gè)表達(dá)式中時(shí),按從左到右的順序計(jì)算加、減運(yùn)算符。字符串連接 (&) 運(yùn)算符不是算術(shù)運(yùn)算符,但是在優(yōu)先級(jí)順序中,它排在所有算術(shù)運(yùn)算符之后和所有比較運(yùn)算符之前。Is 運(yùn)算符是對(duì)象引用比較運(yùn)算符。它并不比較對(duì)象或?qū)ο蟮闹?,而只是進(jìn)行檢查,判斷兩個(gè)對(duì)象引用是否引用同一個(gè)對(duì)象。使用條件語(yǔ)句控制程序執(zhí)行使用條件語(yǔ)句和循環(huán)語(yǔ)句可以控制腳本的流程。使用條件語(yǔ)句可以編寫進(jìn)行判斷和重復(fù)操作的 VBScript 代碼。在 VBScript 中可使用以下條件語(yǔ)句: If.Then.Else 語(yǔ)句 Select Case 語(yǔ)句 使用 If.Then.Else 進(jìn)行判斷If.Then.Else 語(yǔ)句用于計(jì)算條件是否為 True 或 False,并且根據(jù)計(jì)算結(jié)果指定要運(yùn)行的語(yǔ)句。通常,條件是使用比較運(yùn)算符對(duì)值或變量進(jìn)行比較的表達(dá)式。有關(guān)比較運(yùn)算符的詳細(xì)信息,請(qǐng)參閱比較運(yùn)算符。If.Then.Else 語(yǔ)句可以按照需要進(jìn)行嵌套。條件為 True 時(shí)運(yùn)行語(yǔ)句要在條件為 True 時(shí)運(yùn)行單行語(yǔ)句,可使用 If.Then.Else 語(yǔ)句的單行語(yǔ)法。下例示范了單行語(yǔ)法。請(qǐng)注意此例省略了關(guān)鍵字 Else。 Sub FixDate() Dim myDate myDate = #2/13/95# If myDate 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox 循環(huán)重復(fù)了 & counter & 次。 End Sub Sub ChkLastWhile() Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum 10 MsgBox 循環(huán)重復(fù)了 & counter & 次。 End Sub重復(fù)執(zhí)行語(yǔ)句直到條件變?yōu)?TrueUntil 關(guān)鍵字用于檢查 Do.Loop 語(yǔ)句中的條件。有兩種方式檢查條件:在進(jìn)入循環(huán)之前檢查條件(如下面的 ChkFirstUntil 示例);或者在循環(huán)至少運(yùn)行完一次之后檢查條件(如下面的 ChkLastUntil 示例)。只要條件為 False,就會(huì)進(jìn)行循環(huán)。 Sub ChkFirstUntil() Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox 循環(huán)重復(fù)了 & counter & 次。 End Sub Sub ChkLastUntil() Dim counter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox 循環(huán)重復(fù)了 & counter & 次。 End Sub退出循環(huán)Exit Do 語(yǔ)句用于退出 Do.Loop 循環(huán)。因?yàn)橥ǔV皇窃谀承┨厥馇闆r下要退出循環(huán)(例如要避免死循環(huán)),所以可在 If.Then.Else 語(yǔ)句的 True 語(yǔ)句塊中使用 Exit Do 語(yǔ)句。如果條件為 False,循環(huán)將照常運(yùn)行。在下面的示例中,myNum 的初始值將導(dǎo)致死循環(huán)。If.Then.Else 語(yǔ)句檢查此條件,防止出現(xiàn)死循環(huán)。 Sub ExitExample() Dim counter, myNum counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum 10 Then Exit Do Loop MsgBox 循環(huán)重復(fù)了 & counter & 次。 End Sub使用 While.WendWhile.Wend 語(yǔ)句是為那些熟悉其用法的用戶提供的。但是由于 While.Wend 缺少靈活性,所以建議最好使用 Do.Loop 語(yǔ)句。使用 For.NextFor.Next 語(yǔ)句用于將語(yǔ)句塊運(yùn)行指定的次數(shù)。在循環(huán)中使用計(jì)數(shù)器變量,該變量的值隨每一次循環(huán)增加或減少。例如,下面的示例將過(guò)程 MyProc 重復(fù)執(zhí)行 50 次。For 語(yǔ)句指定計(jì)數(shù)器變量 x 及其起始值與終止值。Next 語(yǔ)句使計(jì)數(shù)器變量每次加 1。 Sub DoMyProc50Times() Dim x For x = 1 To 50 MyProc Next End Sub關(guān)鍵字 Step 用于指定計(jì)數(shù)器變量每次增加或減少的值。在下面的示例中,計(jì)數(shù)器變量 j 每次加 2。循環(huán)結(jié)束后,total 的值為 2、4、6、8 和 10 的總和。 Sub TwosTotal() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox 總和為 & total & 。 End Sub要使計(jì)數(shù)器變量遞減,可將 Step 設(shè)為負(fù)值。此時(shí)計(jì)數(shù)器變量的終止值必須小于起始值。在下面的示例中,計(jì)數(shù)器變量 myNum 每次減 2。循環(huán)結(jié)束后,total 的值為 16、14、12、10、8、6、4 和 2 的總和。 Sub NewTotal() Dim myNum, total For myNum = 16 To 2 Step -2 total = total + myNum Next MsgBox 總和為 & total & 。 End SubExit For 語(yǔ)句用于在計(jì)數(shù)器達(dá)到其終止值之前退出 For.Next 語(yǔ)句。因?yàn)橥ǔV皇窃谀承┨厥馇闆r下(例如在發(fā)生錯(cuò)誤時(shí))要退出循環(huán),所以可以在 If.Then.Else 語(yǔ)句的 True 語(yǔ)句塊中使用 Exit For 語(yǔ)句。如果條件為 False,循環(huán)將照常運(yùn)行。使用 For Each.NextFor Each.Next 循環(huán)與 For.Next 循環(huán)類似。For Each.Next 不是將語(yǔ)句運(yùn)行指定的次數(shù),而是對(duì)于數(shù)組中的每個(gè)元素或?qū)ο蠹现械拿恳豁?xiàng)重復(fù)一組語(yǔ)句。這在不知道集合中元素的數(shù)目時(shí)非常有用。在以下示例中,Dictionary 對(duì)象的內(nèi)容用于將文本分別放置在多個(gè)文本框中: 窗體與元素 FORM NAME=frmForm VBScript 過(guò)程在 VBScript 中,過(guò)程被分為兩類:Sub 過(guò)程和 Function 過(guò)程。Sub 過(guò)程Sub 過(guò)程是包含在 Sub 和 End Sub 語(yǔ)句之間的一組 VBScript 語(yǔ)句,執(zhí)行操作但不返回值。Sub 過(guò)程可以使用參數(shù)(由調(diào)用過(guò)程傳遞的常數(shù)、變量或表達(dá)式)。如果 Sub 過(guò)程無(wú)任何參數(shù),則 Sub 語(yǔ)句必須包含空括號(hào) ()。下面的 Sub 過(guò)程使用兩個(gè)固有的(或內(nèi)置的)VBScript 函數(shù),即 MsgBox 和 InputBox,來(lái)提示用戶輸入信息。然后顯示根據(jù)這些信息計(jì)算的結(jié)果。計(jì)算由使用 VBScript 創(chuàng)建的 Function 過(guò)程完成。此過(guò)程在以下討論之后演示。 Sub ConvertTemp() temp = InputBox(請(qǐng)輸入華氏溫度。, 1) MsgBox 溫度為 & Celsius(temp) & 攝氏度。 End SubFunction 過(guò)程Function 過(guò)程是包含在 Function 和 End Function 語(yǔ)句之間的一組 VBScript 語(yǔ)句。Function 過(guò)程與 Sub 過(guò)程類似,但是 Function 過(guò)程可以返回值。Function 過(guò)程可以使用參數(shù)(由調(diào)用過(guò)程傳遞的常數(shù)、變量或表達(dá)式)。如果 Function 過(guò)程無(wú)任何參數(shù),則 Function 語(yǔ)句必須包含空括號(hào) ()。Function 過(guò)程通過(guò)函數(shù)名返回一個(gè)值,這個(gè)值是在過(guò)程的語(yǔ)句中賦給函數(shù)名的。Function 返回值的數(shù)據(jù)類型總是 Variant。在下面的示例中,Celsius 函數(shù)將華氏度換算為攝氏度。Sub 過(guò)程 ConvertTemp 調(diào)用此函數(shù)時(shí),包含參數(shù)值的變量被傳遞給函數(shù)。換算結(jié)果返回到調(diào)用過(guò)程并顯示在消息框中。 Sub ConvertTemp() temp = InputBox(請(qǐng)輸入華氏溫度。, 1) MsgBox 溫度為 & Celsius(temp) & 攝氏度。 End Sub Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function過(guò)程的數(shù)據(jù)進(jìn)出給過(guò)程傳遞數(shù)據(jù)的途徑是使用參數(shù)。參數(shù)被作為要傳遞給過(guò)程的數(shù)據(jù)的占位符。參數(shù)名可以是任何有效的變量名。使用 Sub 語(yǔ)句或 Function 語(yǔ)句創(chuàng)建過(guò)程時(shí),過(guò)程名之后必須緊跟括號(hào)。括號(hào)中包含所有參數(shù),參數(shù)間用逗號(hào)分隔。例如,在下面的示例中,fDegrees 是傳遞給 Celsius 函數(shù)的值的占位符: Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function要從過(guò)程獲取數(shù)據(jù),必須使用 Function 過(guò)程。請(qǐng)記住,F(xiàn)unction 過(guò)程可以返回值;Sub 過(guò)程不返回值。在代碼中使用 Sub 和 Function 過(guò)程調(diào)用 Function 過(guò)程時(shí),函數(shù)名必須用在變量賦值語(yǔ)句的右端或表達(dá)式中。例如: Temp = Celsius(fDegrees)或 MsgBox 溫度為 & Celsius(fDegrees) & 攝氏度。調(diào)用 Sub 過(guò)程時(shí),只需輸入過(guò)程名及所有參數(shù)值,參數(shù)值之間使用逗號(hào)分隔。不需使用 Call 語(yǔ)句,但如果使用了此語(yǔ)句,則必須將所有參數(shù)包含在括號(hào)之中。下面的示例顯示了調(diào)用 MyProc 過(guò)程的兩種方式。一種使用 Call 語(yǔ)句;另一種則不使用。兩種方式效果相同。 Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg請(qǐng)注意當(dāng)不使用 Call 語(yǔ)句進(jìn)行調(diào)用時(shí),括號(hào)被省略。VBScript編碼約定編碼約定是幫助您使用 Microsoft Visual Basic Scripting Edition 編寫代碼的一些建議。編碼約定包含以下內(nèi)容: 對(duì)象、變量和過(guò)程的命名約定 注釋約定 文本格式和縮進(jìn)指南 使用一致的編碼約定的主要原因是使腳本或腳本集的結(jié)構(gòu)和編碼樣式標(biāo)準(zhǔn)化,這樣代碼易于閱讀和理解。使用好的編碼約定可以使源代碼明白、易讀、準(zhǔn)確,更加直觀且與其他語(yǔ)言約定保持一致。常數(shù)命名約定VBScript 的早期版本不允許創(chuàng)建用戶自定義常數(shù)。如果要使用常數(shù),則常數(shù)以變量的方式實(shí)現(xiàn),且全部字母大寫以和其他變量區(qū)分。常數(shù)名中的多個(gè)單詞用下劃線 (_) 分隔。例如: USER_LIST_MAX NEW_LINE這種標(biāo)識(shí)常數(shù)的方法依舊可行,但您還可以選擇其他方案,用 Const 語(yǔ)句創(chuàng)建真正的常數(shù)。這個(gè)約定使用大小寫混合的格式,并以“con”作為常數(shù)名的前綴。例如: conYourOwnConstant變量命名約定為提高易讀和一致性,請(qǐng)?jiān)?VBScript 代碼中使用以下變量命名約定:子類型前綴示例BooleanblnblnFoundBytebytbytRasterDataDate (Time)dtmdtmStartDoubledbldblToleranceErrorerrerrOrderNumIntegerintintQuantityLonglnglngDistanceObjectobjobjCurrentSinglesngsngAverageStringstrstrFirstName變量作用域變量應(yīng)定義在盡量小的作用域中。VBScript 變量的作用域如下所示:作用域聲明變量處可見(jiàn)性過(guò)程級(jí)事件、函數(shù)或子過(guò)程。在聲明變量的過(guò)程中可見(jiàn)。Script 級(jí)HTML 頁(yè)面的 HEAD 部分,任何過(guò)程之外。在腳本的所有過(guò)程中可見(jiàn)。變量作用域前綴隨著腳本代碼長(zhǎng)度的增加,有必要快速區(qū)分變量的作用域。在類型前綴前面添加一個(gè)單字符前綴可以實(shí)現(xiàn)這一點(diǎn),而不致使變量名過(guò)長(zhǎng)。作用域前綴示例過(guò)程級(jí)無(wú)dblVelocityScript 級(jí)ssblnCalcInProgress描述性變量名和過(guò)程名變量名或過(guò)程名的主體應(yīng)使用大小寫混合格式,并且盡量完整地描述其目的。另外,過(guò)程名應(yīng)以動(dòng)詞開(kāi)始,例如 InitNameArray 或 CloseDialog。對(duì)于經(jīng)常使用的或較長(zhǎng)的名稱,推薦使用標(biāo)準(zhǔn)縮寫以使名稱保持在適當(dāng)?shù)拈L(zhǎng)度內(nèi)。通常多于 32 個(gè)字符的變量名會(huì)變得難以閱讀。使用縮寫時(shí),應(yīng)確保在整個(gè)腳本中保持一致。例如,在一個(gè)腳本或腳本集中隨意切換 Cnt 和 Count 將造成混亂。對(duì)象命名約定下表列出了 VBScript 中可能用到的對(duì)象命名約定(推薦):對(duì)象類型前綴示例3D 面板pnlpnlGroup動(dòng)畫按鈕anianiMailBox復(fù)選框chkchkReadOnly組合框、下拉列表框cbocboEnglish命令按鈕cmdcmdExit公共對(duì)話框dlgdlgFileOpen框架frafraLanguage水平滾動(dòng)條hsbhsbVolume圖像imgimgIcon標(biāo)簽lbllblHelpMessage直線linlinVertical列表框lstlstPolicyCodes旋鈕spnspnPages文本框txttxtLastName垂直滾動(dòng)條vsbvsbRate滑塊sldsldScale代碼注釋約定所有過(guò)程的開(kāi)始部分都應(yīng)有描述其功能的簡(jiǎn)要注釋。這些注釋并不描述細(xì)節(jié)信息(如何實(shí)現(xiàn)功能),這是因?yàn)榧?xì)節(jié)有時(shí)要頻繁更改。這樣就可以避免不必要的注釋維護(hù)工作以及錯(cuò)誤的注釋。細(xì)節(jié)信息由代碼本身及必要的內(nèi)部注釋來(lái)描述。當(dāng)傳遞給過(guò)程的參數(shù)的用途不明顯,或過(guò)程對(duì)參數(shù)的取值范圍有要求時(shí),應(yīng)加以說(shuō)明。如果過(guò)程改變了函數(shù)和變量的返回值(特別是通過(guò)參數(shù)引用來(lái)改變),也應(yīng)在過(guò)程的開(kāi)始部分描述該返回值。過(guò)程開(kāi)始部分的注釋應(yīng)包含以下區(qū)段標(biāo)題。相關(guān)樣例,請(qǐng)參閱后面的“格式化代碼”部分。區(qū)段標(biāo)題注釋內(nèi)容目的過(guò)程的功能(不是實(shí)現(xiàn)功能的方法)。假設(shè)其狀態(tài)影響此過(guò)程的外部變量、控件或其他元素的列表。效果過(guò)程對(duì)每個(gè)外部變量、控件或其他元素的影響效果的列表。輸入每個(gè)目的不明顯的參數(shù)的解釋。每個(gè)參數(shù)都應(yīng)占據(jù)單獨(dú)一行并有其內(nèi)部注釋。返回返回值的解釋。請(qǐng)記住以下幾點(diǎn): 每個(gè)重要的變量聲明都應(yīng)有內(nèi)部注釋,描述變量的用途。 應(yīng)清楚地命名變量、控件和過(guò)程,僅在說(shuō)明復(fù)雜細(xì)節(jié)時(shí)需要內(nèi)部注釋。 應(yīng)在腳本的開(kāi)始部分包含描述該腳本的概述,列舉對(duì)象、過(guò)程、運(yùn)算法則、對(duì)話框和其他系統(tǒng)從屬物。有時(shí)一段描述運(yùn)算法則的假碼是很有用的。 格式化代碼應(yīng)盡可能多地保留屏幕空間,但仍允許用代碼格式反映邏輯結(jié)構(gòu)和嵌套。以下為幾點(diǎn)提示: 標(biāo)準(zhǔn)嵌套塊應(yīng)縮進(jìn) 4 個(gè)空格。 過(guò)程的概述注釋應(yīng)縮進(jìn) 1 個(gè)空格。 概述注釋后的最高層語(yǔ)句應(yīng)縮進(jìn) 4 個(gè)空格,每一層嵌套塊再縮進(jìn) 4 個(gè)空格。例如: * Purpose: Locates the first occurrence of a specified user in the UserList array. Inputs: strUserList(): the list of users to be searched.strTargetUser: the name of the user to search for. Returns: The index of the first occurrence of the strTargetUser in the strUserList array. If the target user is not found, return -1.*Function intFindUser (strUserList(), strTargetUser)Dim i Loop counter.Dim blnFound Target found flagintFindUser = -1i = 0 Initialize loop counterDo While i = Ubound(strUserList) and Not blnFoundIf strUserList(i) = strTargetUser Then blnFound = True Set flag to TrueintFindUser = i Set return value to loop countEnd Ifi = i + 1 Increment loop counterLoopEnd FunctionVBScript 語(yǔ)句描述語(yǔ)言元素將控制權(quán)交給一個(gè) Sub 或 Function 過(guò)程。Call 語(yǔ)句聲明一個(gè)類的名稱。Class 語(yǔ)句聲明用于替換文字值的常數(shù)。Const 語(yǔ)句聲明變量并分配存儲(chǔ)空間。Dim 語(yǔ)句當(dāng)某個(gè)條件為 True 時(shí)或在某個(gè)條件變?yōu)?True 之前重復(fù)執(zhí)行一個(gè)語(yǔ)句塊。Do.Loop 語(yǔ)句重新初始化固定大小的數(shù)組的元素和釋放動(dòng)態(tài)數(shù)組的存儲(chǔ)空間。Erase 語(yǔ)句執(zhí)行一條或多條指定語(yǔ)句。Execute 語(yǔ)句在一個(gè)腳本的全局命名空間中執(zhí)行一條或多條語(yǔ)句。ExecuteGlobal 語(yǔ)句退出 Do.Loop、For.Next、Function 或 Sub 代碼塊。Exit 語(yǔ)句重復(fù)地執(zhí)行一組語(yǔ)句達(dá)指定次數(shù)。For.Next 語(yǔ)句針對(duì)一個(gè)數(shù)組或集合中的每個(gè)元素重復(fù)執(zhí)行一組語(yǔ)句。For Each.Next 語(yǔ)句聲明一個(gè) Function 過(guò)程的名稱、參數(shù)和代碼。Function 語(yǔ)句根據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論