版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、vbscript教程目錄microsoft visual basic scripting edition 是程序開(kāi)發(fā)語(yǔ)言 visual basic 家族的最新成員,它將靈活的 script 應(yīng)用于更廣泛的領(lǐng)域,包括 microsoft internet explorer 中的web 客戶(hù)機(jī) script 和 microsoft internet information server 中的 web 服務(wù)器 script。第一課 什么是 vbscript第二課 在html頁(yè)面中添加vbscript代碼第三課 vbscript數(shù)據(jù)類(lèi)型第四課 vbscript變量第五課 vbscript常數(shù)第六課 v
2、bscript運(yùn)算符第七課 使用條件語(yǔ)句第八課 使用循環(huán)語(yǔ)句第九課 vbscript過(guò)程第十課 vbscript編碼約定第十一課 深入vbscript第十二課 vbscript頁(yè)面的簡(jiǎn)單樣例第十三課 vbscript與窗體第十四課 在vbscript中使用對(duì)象附錄 vbscript函數(shù)參考第一課 什么是 vbscriptmicrosoft visual basic scripting edition 是程序開(kāi)發(fā)語(yǔ)言 visual basic 家族的最新成員,它將靈活的 script 應(yīng)用于更廣泛的領(lǐng)域,包括 microsoft internet explorer 中的 web 客戶(hù)機(jī) scri
3、pt 和 microsoft internet information server 中的 web 服務(wù)器 script。 易學(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 s
4、criptvbscript 使用 activex script 與宿主應(yīng)用程序?qū)υ?huà)。使用 activex script,瀏覽器和其他宿主應(yīng)用程序不再需要每個(gè) script 部件的特殊集成代碼。activex script 使宿主可以編譯 script、獲取和調(diào)用入口點(diǎn)及管理開(kāi)發(fā)者可用的命名空間。通過(guò) activex script,語(yǔ)言廠商可以建立標(biāo)準(zhǔn) script 運(yùn)行時(shí)語(yǔ)言。microsoft 將提供 vbscript 的運(yùn)行時(shí)支持。microsoft 正在與多個(gè) internet 組一起定義 activex script 標(biāo)準(zhǔn)以使 script 引擎可以互換。 activex script
5、 可用在 microsoft internet explorer 和 microsoft internet information server 中。其他應(yīng)用程序和瀏覽器中的vbscript作為開(kāi)發(fā)者,您可以在您的產(chǎn)品中免費(fèi)使用 vbscript 源實(shí)現(xiàn)程序。microsoft 為 32 位 windows api、16 位 windows api 和 macintosh 提供 vbscript 的二進(jìn)制實(shí)現(xiàn)程序。vbscript 與 world wide web 瀏覽器集成在一起。vbscript 和 activex script 也可以在其他應(yīng)用程序中作為普通 script 語(yǔ)言使用。第二
6、課 在html頁(yè)面中添加vbscript代碼script 元素用于將 vbscript 代碼添加到 html 頁(yè)面中。 標(biāo)記vbscript 代碼寫(xiě)在成對(duì)的 標(biāo)記之間。例如,以下代碼為一個(gè)測(cè)試傳遞日期的過(guò)程: 2end function-代碼的開(kāi)始和結(jié)束部分都有 標(biāo)記。language 屬性用于指定所使用的 script 語(yǔ)言。由于瀏覽器能夠使用多種 script 語(yǔ)言,所以必須在此指定所使用的 script 語(yǔ)言。注意 candeliver 函數(shù)被嵌入在注釋標(biāo)記()中。這樣能夠避免不能識(shí)別 標(biāo)記的瀏覽器將代碼顯示在頁(yè)面中。因?yàn)橐陨鲜纠且粋€(gè)通用函數(shù)(不依賴(lài)于任何窗體控件),所以可以將其包含在
7、頁(yè)面的 head 部分: 訂購(gòu) 2end function-.script 塊可以出現(xiàn)在 html 頁(yè)面的任何地方(body 或 head 部分之中)。然而最好將所有的一般目標(biāo) script 代碼放在 head 部分中,以使所有 script 代碼集中放置。這樣可以確保在 body 部分調(diào)用代碼之前所有 script 代碼都被讀取并解碼。 上述規(guī)則的一個(gè)值得注意的例外情況是,在窗體中提供內(nèi)部代碼以響應(yīng)窗體中對(duì)象的事件。例如,以下示例在窗體中嵌入 script 代碼以響應(yīng)窗體中按鈕的單擊事件:測(cè)試按鈕事件msgbox 按鈕被單擊!大多數(shù) script 代碼在 sub 或 function 過(guò)程中
8、,僅在其他代碼要調(diào)用它時(shí)執(zhí)行。然而,也可以將 vbscript 代碼放在過(guò)程之外、script 塊之中。這類(lèi)代碼僅在 html 頁(yè)面加載時(shí)執(zhí)行一次。這樣就可以在加載 web 頁(yè)面時(shí)初始化數(shù)據(jù)或動(dòng)態(tài)地改變頁(yè)面的外觀。第三課 vbscript數(shù)據(jù)類(lèi)型什么是 vbscript 數(shù)據(jù)類(lèi)型?vbscript 只有一種數(shù)據(jù)類(lèi)型,稱(chēng)為 variant。variant 是一種特殊的數(shù)據(jù)類(lèi)型,根據(jù)使用的方式,它可以包含不同類(lèi)別的信息。因?yàn)?variant 是 vbscript 中唯一的數(shù)據(jù)類(lèi)型,所以它也是 vbscript 中所有函數(shù)的返回值的數(shù)據(jù)類(lèi)型。最簡(jiǎn)單的 variant 可以包含數(shù)字或字符串信息。var
9、iant 用于數(shù)字上下文中時(shí)作為數(shù)字處理,用于字符串上下文中時(shí)作為字符串處理。這就是說(shuō),如果使用看起來(lái)象是數(shù)字的數(shù)據(jù),則 vbscript 會(huì)假定其為數(shù)字并以適用于數(shù)字的方式處理。與此類(lèi)似,如果使用的數(shù)據(jù)只可能是字符串,則 vbscript 將按字符串處理。當(dāng)然,也可以將數(shù)字包含在引號(hào) ( ) 中使其成為字符串。variant 子類(lèi)型除簡(jiǎn)單數(shù)字或字符串以外,variant 可以進(jìn)一步區(qū)分?jǐn)?shù)值信息的特定含義。例如使用數(shù)值信息表示日期或時(shí)間。此類(lèi)數(shù)據(jù)在與其他日期或時(shí)間數(shù)據(jù)一起使用時(shí),結(jié)果也總是表示為日期或時(shí)間。當(dāng)然,從 boolean 值到浮點(diǎn)數(shù),數(shù)值信息是多種多樣的。variant 包含的數(shù)值信
10、息類(lèi)型稱(chēng)為子類(lèi)型。大多數(shù)情況下,可將所需的數(shù)據(jù)放進(jìn) variant 中,而 variant 也會(huì)按照最適用于其包含的數(shù)據(jù)的方式進(jìn)行操作。 下表顯示variant包含的數(shù)據(jù)子類(lèi)型: 子類(lèi)型描 述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,4
11、77.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 日到公元
12、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ù)的子類(lèi)型。另外,可使用 vartype 函數(shù)返回?cái)?shù)據(jù)的 variant 子類(lèi)型。第四課 vbscript變量什么是變量?變量是一種使用方便的占位符,用于引用計(jì)算機(jī)內(nèi)存地址,該地址可以存儲(chǔ) script 運(yùn)行時(shí)可更改的程序信息。例如,可以創(chuàng)建一個(gè)名為 clickcount 的變量來(lái)存儲(chǔ)用戶(hù)單擊 web 頁(yè)面上某個(gè)對(duì)象的次數(shù)。使用變量并不需要了解變量在計(jì)算機(jī)內(nèi)存中的地址,只要通過(guò)變量名引用變量就可以查看或更改變量的值。在 vbscri
13、pt 中只有一個(gè)基本數(shù)據(jù)類(lèi)型,即 variant,因此所有變量的數(shù)據(jù)類(lèi)型都是 variant。聲明變量聲明變量的一種方式是使用 dim 語(yǔ)句、public 語(yǔ)句和 private 語(yǔ)句在 script 中顯式聲明變量。例如:dim degreesfahrenheit聲明多個(gè)變量時(shí),使用逗號(hào)分隔變量。例如:dim top, bottom, left, right另一種方式是通過(guò)直接在 script 中使用變量名這一簡(jiǎn)單方式隱式聲明變量。這通常不是一個(gè)好習(xí)慣,因?yàn)檫@樣有時(shí)會(huì)由于變量名被拼錯(cuò)而導(dǎo)致在運(yùn)行 script 時(shí)出現(xiàn)意外的結(jié)果。因此,最好使用 option explicit 語(yǔ)句顯式聲明所有
14、變量,并將其作為 script 的第一條語(yǔ)句。命名規(guī)則變量命名必須遵循 vbscript 的標(biāo)準(zhǔn)命名規(guī)則。變量命名必須遵循: 第一個(gè)字符必須是字母。不能包含嵌入的句點(diǎn)。 長(zhǎng)度不能超過(guò) 255 個(gè)字符。在被聲明的作用域內(nèi)必須唯一。 變量的作用域與存活期變量的作用域由聲明它的位置決定。如果在過(guò)程中聲明變量,則只有該過(guò)程中的代碼可以訪問(wèn)或更改變量值,此時(shí)變量具有局部作用域并被稱(chēng)為過(guò)程級(jí)變量。如果在過(guò)程之外聲明變量,則該變量可以被 script 中所有過(guò)程所識(shí)別,稱(chēng)為 script 級(jí)變量,具有 script 級(jí)作用域。 變量存在的時(shí)間稱(chēng)為存活期。script 級(jí)變量的存活期從被聲明的一刻起,直到 s
15、cript 運(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è)值的變量被稱(chēng)為標(biāo)量變量。有時(shí)候,將多個(gè)相關(guān)值賦給一個(gè)變量更為方便,因此可以創(chuàng)建包含一系列值的變量,稱(chēng)為數(shù)組變量。數(shù)組變量和標(biāo)量變量是以相同的方式聲明的,唯一的區(qū)別是聲明數(shù)組變量時(shí)變量名后面帶有括號(hào) ( )。下例聲明
16、了一個(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ù)組被稱(chēng)為固定大小的數(shù)組。 在數(shù)組中使用索引為數(shù)組的每個(gè)元素賦值。從 0 到 10,將數(shù)據(jù)賦給數(shù)組的元素,如下所示: a(0) = 256a(1) = 324a(2) = 100. . .a(10) = 55與此類(lèi)似,使用索引可以檢索到所需的數(shù)組元素的數(shù)據(jù)。例如:. . . somevariable = a(8) . . . 數(shù)組并不僅限于一維。數(shù)組的
17、維數(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)行 script 時(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ù)和每一維的大小。在
18、下例中,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)有任何限制的,但是應(yīng)注意:將數(shù)組的大小調(diào)小時(shí),將會(huì)丟失被刪除元素的數(shù)據(jù)。 第五課 vbscript常數(shù)什么是常數(shù)?常數(shù)是具有一定含義的名稱(chēng),用于代替數(shù)字或字符串,其值從不改變。vbscript 定義了許多固有常數(shù)。詳細(xì)信息,請(qǐng)參閱 vbscript 語(yǔ)言參考。 創(chuàng)建常數(shù)您可以使用 const
19、語(yǔ)句在 vbscript 中創(chuàng)建用戶(hù)自定義常數(shù)。使用 const 語(yǔ)句可以創(chuàng)建名稱(chē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)行 script 時(shí)對(duì)常數(shù)重新賦值。例如,可以使用“vb”或“con”作常數(shù)名的前綴,或?qū)⒊?shù)名的所有字母大寫(xiě)。將常數(shù)和
20、變量區(qū)分開(kāi)可以在開(kāi)發(fā)復(fù)雜的 script 時(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è)順序被稱(chēng)為運(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)算
21、符的優(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ǔ)句
22、控制程序執(zhí)行使用條件語(yǔ)句和循環(huán)語(yǔ)句可以控制 script 的流程。使用條件語(yǔ)句可以編寫(xiě)進(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)行單
23、行語(yǔ)句,可使用 if.then.else 語(yǔ)句的單行語(yǔ)法。下例示范了單行語(yǔ)法。請(qǐng)注意此例省略了關(guān)鍵字 else。sub fixdate()dim mydatemydate = #2/13/95#if mydate 10mynum = mynum 1counter = counter + 1loopmsgbox 循環(huán)重復(fù)了 & counter & 次。end subsub chklastwhile()dim counter, mynumcounter = 0mynum = 9domynum = mynum - 1counter = counter + 1loop while mynum 10ms
24、gbox 循環(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, mynumcounter = 0mynum = 20do until mynum = 10mynum = mynum 1counter = counter + 1loop
25、msgbox 循環(huán)重復(fù)了 & counter & 次。end subsub chklastuntil()dim counter, mynumcounter = 0mynum = 1domynum = mynum + 1counter = counter + 1loop until mynum = 10msgbox 循環(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ǔ)句。如果條件為 fals
26、e,循環(huán)將照常運(yùn)行。 在下面的示例中,mynum 的初始值將導(dǎo)致死循環(huán)。if.then.else 語(yǔ)句檢查此條件,防止出現(xiàn)死循環(huán)。sub exitexample()dim counter, mynumcounter = 0mynum = 9do until mynum = 10mynum = mynum 1counter = counter + 1if mynum 10 then exit doloopmsgbox 循環(huán)重復(fù)了 & counter & 次。end sub使用 while.wendwhile.wend 語(yǔ)句是為那些熟悉其用法的用戶(hù)提供的。但是由于 while.wend 缺少靈活性
27、,所以建議最好使用 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 xfor x = 1 to 50myprocnextend sub關(guān)鍵字 step 用于指定計(jì)數(shù)器變量每次增加或減少的值。在下面的示例中,計(jì)數(shù)器變量 j 每次加 2。循環(huán)結(jié)束后,total 的值為 2、4、6、8 和 10 的總
28、和。 sub twostotal()dim j, totalfor j = 2 to 10 step 2total = total + jnextmsgbox 總和為 & 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, totalfor mynum = 16 to 2 step 2total = total + mynumnextmsgbox
29、總和為 & 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)類(lèi)似。for each.next 不是將語(yǔ)句運(yùn)行指定的次數(shù),而是對(duì)于數(shù)組中的每個(gè)元素或?qū)ο蠹现械拿恳豁?xiàng)重復(fù)一組語(yǔ)句。這在不知道集合中元素的數(shù)目時(shí)非常有用。 在以下示例中,dictionary
30、 對(duì)象的內(nèi)容用于將文本分別放置在多個(gè)文本框中: 窗體與元素form name=frmform第九課 vbscript過(guò)程過(guò)程分類(lèi)在 vbscript 中,過(guò)程被分為兩類(lèi):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)提示用戶(hù)輸入信息。然后
31、顯示根據(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ò)程類(lèi)似,但是 function 過(guò)程可以返回值。function 過(guò)程可以使用參數(shù)(由調(diào)用過(guò)程傳遞的常數(shù)、變量或表達(dá)式)。如果 f
32、unction 過(guò)程無(wú)任何參數(shù),則 function 語(yǔ)句必須包含空括號(hào) ()。function 過(guò)程通過(guò)函數(shù)名返回一個(gè)值,這個(gè)值是在過(guò)程的語(yǔ)句中賦給函數(shù)名的。function 返回值的數(shù)據(jù)類(lèi)型總是 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 subfunction celsius
33、(fdegrees)celsius = (fdegrees - 32) * 5 / 9end 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 / 9end function要從過(guò)程獲取數(shù)據(jù),必須使用 fu
34、nction 過(guò)程。請(qǐng)記住,function 過(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ǔ)句;另一種則不使用。兩種方式效
35、果相同。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 編寫(xiě)代碼的一些建議。編碼約定包含以下內(nèi)容:對(duì)象、變量和過(guò)程的命名約定注釋約定 文本格式和縮進(jìn)指南 使用一致的編碼約定的主要原因是使 script 或 script 集的結(jié)構(gòu)和編碼樣式標(biāo)準(zhǔn)化,這樣代碼易于閱讀和理解。使用好的編碼約定可以使源代碼明白、易讀、準(zhǔn)確,更加直觀且
36、與其他語(yǔ)言約定保持一致。常數(shù)命名約定vbscript 的早期版本不允許創(chuàng)建用戶(hù)自定義常數(shù)。如果要使用常數(shù),則常數(shù)以變量的方式實(shí)現(xiàn),且全部字母大寫(xiě)以和其他變量區(qū)分。常數(shù)名中的多個(gè)單詞用下劃線 (_) 分隔。例如: user_list_maxnew_line這種標(biāo)識(shí)常數(shù)的方法依舊可行,但您還可以選擇其他方案,用 const 語(yǔ)句創(chuàng)建真正的常數(shù)。這個(gè)約定使用大小寫(xiě)混合的格式,并以“con”作為常數(shù)名的前綴。例如:conyourownconstant變量命名約定出于易讀和一致性的目的,請(qǐng)?jiān)?vbscript 代碼中使用以下變量命名約定: 子 類(lèi) 型前 綴示 例booleanblnblnfoundbyt
37、ebytbytrasterdatadate (time)dtmdtmstartdoubledbldbltoleranceerrorerrerrordernumintegerintintquantitylonglnglngdistanceobjectobjobjcurrentsinglesngsngaveragestringstrstrfirstname變量作用域變量應(yīng)定義在盡量小的作用域中。vbscript 變量的作用域如下所示: 作用域聲明變量處可見(jiàn)性過(guò)程級(jí)事件、函數(shù)或子過(guò)程在聲明變量的過(guò)程中可見(jiàn)script 級(jí)html 頁(yè)面的 head 部分,任何過(guò)程之外在 script 的所有過(guò)程中可見(jiàn)
38、變量作用域前綴隨著 script 代碼長(zhǎng)度的增加,有必要快速區(qū)分變量的作用域。在類(lèi)型前綴前面添加一個(gè)單字符前綴可以實(shí)現(xiàn)這一點(diǎn),而不致使變量名過(guò)長(zhǎng)。 作用域前綴示例過(guò)程級(jí)無(wú)dblvelocityscript 級(jí)ssblncalcinprogress描述性變量名和過(guò)程名變量名或過(guò)程名的主體應(yīng)使用大小寫(xiě)混合格式,并且盡量完整地描述其目的。另外,過(guò)程名應(yīng)以動(dòng)詞開(kāi)始,例如 initnamearray 或 closedialog。對(duì)于經(jīng)常使用的或較長(zhǎng)的名稱(chēng),推薦使用標(biāo)準(zhǔn)縮寫(xiě)以使名稱(chēng)保持在適當(dāng)?shù)拈L(zhǎng)度內(nèi)。通常多于 32 個(gè)字符的變量名會(huì)變得難以閱讀。使用縮寫(xiě)時(shí),應(yīng)確保在整個(gè) script 中保持一致。例如,在
39、一個(gè) script 或 script 集中隨意切換 cnt 和 count 將造成混亂。 對(duì)象命名約定下表列出了 vbscript 中可能用到的對(duì)象命名約定(推薦): 對(duì)象類(lèi)型前綴示例3d 面板pnlpnlgroup動(dòng)畫(huà)按鈕anianimailbox復(fù)選框chkchkreadonly組合框、下拉列表框cbocboenglish命令按鈕cmdcmdexit公共對(duì)話(huà)框dlgdlgfileopen框架frafralanguage水平滾動(dòng)條hsbhsbvolume圖像imgimgicon標(biāo)簽lbllblhelpmessage直線linlinvertical列表框lstlstpolicycodes旋鈕s
40、pnspnpages文本框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)始部分的注釋?xiě)?yīng)包含以下區(qū)段標(biāo)題。相關(guān)樣例,請(qǐng)參閱后面的“格式化代碼”部分。 區(qū)段標(biāo)題注釋內(nèi)容
41、目的過(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)部注釋?zhuān)枋鲎兞康挠猛?。?yīng)清楚地命名變量、控件和過(guò)程,僅在說(shuō)明復(fù)雜細(xì)節(jié)時(shí)需要內(nèi)部注釋。應(yīng)在 script 的開(kāi)始部分包含描述該 script 的概述,列舉對(duì)象、過(guò)程、運(yùn)算法則、對(duì)話(huà)框和其他系統(tǒng)從屬物。有時(shí)一段描述運(yùn)算法則的假碼是很有用的。格式化代碼應(yīng)盡可能多地保留屏空間,但仍允許用代碼格式反映邏輯結(jié)構(gòu)和嵌套。以下為幾
42、點(diǎn)提示: 標(biāo)準(zhǔn)嵌套塊應(yīng)縮進(jìn) 4 個(gè)空格。 過(guò)程的概述注釋?xiě)?yīng)縮進(jìn) 1 個(gè)空格。 概述注釋后的最高層語(yǔ)句應(yīng)縮進(jìn) 4 個(gè)空格,每一層嵌套塊再縮進(jìn) 4 個(gè)空格。例如:* 目的:返回指定用戶(hù)在 userlist 數(shù)組中第一次出現(xiàn)的位置。 輸入: struserlist(): 所查找的用戶(hù)列表。 strtargetuser: 要查找的用戶(hù)名。 返回: strtargetuser 在 struserlist 數(shù)組中第一次出現(xiàn)時(shí)的索引。 如果目標(biāo)用戶(hù)未找到,返回 -1。*function intfinduser (struserlist(), strtargetuser)dim i 循環(huán)計(jì)數(shù)器。dim blnfound 發(fā)現(xiàn)目標(biāo)的標(biāo)記。intfinduser = -1i = 0 初始化循環(huán)計(jì)數(shù)器。do while i = ubound(struserlist) and not blnfoundif struserlist(i) = strtargetuser then blnfound = true 標(biāo)記設(shè)為 true。intfinduser = i 返回值設(shè)為循環(huán)計(jì)數(shù)器。end ifi = i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中學(xué)生宿舍樓選址分析
- 高效農(nóng)業(yè)信息化與智能化應(yīng)用可行性分析
- 2024貨物運(yùn)輸合同書(shū)正規(guī)范本
- S-R-R-VH032-CO-C3-CONH-C2-PEG3-OH-生命科學(xué)試劑-MCE
- SNF-9007-生命科學(xué)試劑-MCE
- 三年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)匯編及答案集錦
- 《臨床檢驗(yàn)基礎(chǔ)》血液一般檢驗(yàn)考試題庫(kù)(含答案)
- 船舶維護(hù)修理中的安全隱患
- 工程部績(jī)效考核制度
- 暑期2024年社會(huì)實(shí)踐報(bào)告范文(33篇)
- 物聯(lián)網(wǎng)技術(shù)在軍事上的應(yīng)用與現(xiàn)代戰(zhàn)爭(zhēng)教案
- 科技暢想未來(lái)主題班會(huì) 課件
- 《員工心理健康》課件
- 微型站消防站課件培訓(xùn)
- 北京市豐臺(tái)區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 儲(chǔ)氣罐保養(yǎng)記錄表
- 計(jì)算思維與程序設(shè)計(jì)
- 境外安全管理培訓(xùn)(海外)課件
- 《應(yīng)對(duì)同伴壓力》課件
- 主題漫展策劃方案
- 小學(xué)生自主學(xué)習(xí)能力培養(yǎng)及教師指導(dǎo)策略
評(píng)論
0/150
提交評(píng)論