




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.VBS從入門到精通第一課 什么是 VBScriptMicrosoft Visual Basic Scripting Edition 是程序開發語言 Visual Basic 家族的最新成員,它將靈活的 Script 應用于更廣泛的領域,包括 Microsoft Internet Explorer 中的 Web 客戶機 Script 和 Microsoft Internet Information Server 中的 Web 服務器 Script。 易學易用如果您已了解 Visual Basic 或 Visual Basic for Applications,就會很快熟悉 VBScript。即
2、使您沒有學過 Visual Basic,只要學會 VBScript,就能夠使用所有的 Visual Basic 語言進行程序設計。雖然您可以從本教程的幾個 Web 頁面中學習 VBscript,但是本教程并沒有告訴您如何編程。要學習編程,請閱讀由 Microsoft Press 出版的Step by Step。 ActiveX ScriptVBScript 使用 ActiveX Script 與宿主應用程序對話。使用 ActiveX Script,瀏覽器和其他宿主應用程序不再需要每個 Script 部件的特殊集成代碼。ActiveX Script 使宿主可以編譯 Script、獲取和調用入口點
3、及管理開發者可用的命名空間。通過 ActiveX Script,語言廠商可以建立標準 Script 運行時語言。Microsoft 將提供 VBScript 的運行時支持。Microsoft 正在與多個 Internet 組一起定義 ActiveX Script 標準以使 Script 引擎可以互換。 ActiveX Script 可用在 Microsoft® Internet Explorer 和 Microsoft® Internet Information Server 中。 其他應用程序和瀏覽器中的 VBScript作為開發者,您可以在您的產品中免費使用 VBScr
4、ipt 源實現程序。Microsoft 為 32 位 Windows® API、16 位 Windows API 和 Macintosh® 提供 VBscript 的二進制實現程序。VBScript 與 World Wide Web 瀏覽器集成在一起。VBScript 和 ActiveX Script 也可以在其他應用程序中作為普通 Script 語言使用。第二課 在HTML頁面中添加VBscript代碼SCRIPT 元素用于將 VBScript 代碼添加到 HTML 頁面中。<SCRIPT> 標記VBScript 代碼寫在成對的 <SCRIPT>
5、標記之間。例如,以下代碼為一個測試傳遞日期的過程:<SCRIPT LANGUAGE="VBScript"> <!-Function CanDeliver(Dt)CanDeliver = (CDate(Dt) - Now() > 2End Function-></SCRIPT>代碼的開始和結束部分都有 <SCRIPT> 標記。LANGUAGE 屬性用于指定所使用的 Script 語言。由于瀏覽器能夠使用多種 Script 語言,所以必須在此指定所使用的 Script 語言。注意 CanDeliver 函數被嵌入在注釋標記(
6、<!- 和 ->)中。這樣能夠避免不能識別 <SCRIPT> 標記的瀏覽器將代碼顯示在頁面中。 因為以上示例是一個通用函數(不依賴于任何窗體控件),所以可以將其包含在頁面的 HEAD 部分: <HTML><HEAD><TITLE>訂購</TITLE><SCRIPT LANGUAGE="VBScript"><!-Function CanDeliver(Dt)CanDeliver = (CDate(Dt) - Now() > 2End Function-></SCRIPT
7、></HEAD><BODY>.SCRIPT 塊可以出現在 HTML 頁面的任何地方(BODY 或 HEAD 部分之中)。然而最好將所有的一般目標 Script 代碼放在 HEAD 部分中,以使所有 Script 代碼集中放置。這樣可以確保在 BODY 部分調用代碼之前所有 Script 代碼都被讀取并解碼。 上述規則的一個值得注意的例外情況是,在窗體中提供內部代碼以響應窗體中對象的事件。例如,以下示例在窗體中嵌入 Script 代碼以響應窗體中按鈕的單擊事件: <HTML><HEAD><TITLE>測試按鈕事件</TITL
8、E></HEAD><BODY><FORM NAME="Form1"><INPUT TYPE="Button" NAME="Button1" VALUE="單擊"><SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">MsgBox "按鈕被單擊!"</SCRIPT></FORM></
9、BODY></HTML>大多數 Script 代碼在 Sub 或 Function 過程中,僅在其他代碼要調用它時執行。然而,也可以將 VBScript 代碼放在過程之外、SCRIPT 塊之中。這類代碼僅在 HTML 頁面加載時執行一次。這樣就可以在加載 Web 頁面時初始化數據或動態地改變頁面的外觀。第三課 VBScript數據類型什么是 VBScript 數據類型?VBScript 只有一種數據類型,稱為 Variant。Variant 是一種特殊的數據類型,根據使用的方式,它可以包含不同類別的信息。因為 Variant 是 VBScript 中唯一的數據類型,所以它也是
10、 VBScript 中所有函數的返回值的數據類型。 最簡單的 Variant 可以包含數字或字符串信息。Variant 用于數字上下文中時作為數字處理,用于字符串上下文中時作為字符串處理。這就是說,如果使用看起來象是數字的數據,則 VBScript 會假定其為數字并以適用于數字的方式處理。與此類似,如果使用的數據只可能是字符串,則 VBScript 將按字符串處理。當然,也可以將數字包含在引號 (" ") 中使其成為字符串。 Variant 子類型除簡單數字或字符串以外,Variant 可以進一步區分數值信息的特定含義。例如使用數值信息表示日期或時間。此類數據在與其他日期或
11、時間數據一起使用時,結果也總是表示為日期或時間。當然,從 Boolean 值到浮點數,數值信息是多種多樣的。Variant 包含的數值信息類型稱為子類型。大多數情況下,可將所需的數據放進 Variant 中,而 Variant 也會按照最適用于其包含的數據的方式進行操作。 下表顯示 Variant 包含的數據子類型: 子類型描述Empty未初始化的 Variant。對于數值變量,值為 0;對于字符串變量,值為零長度字符串 ("")。Null不包含任何有效數據的 Variant。Boolean包含 True 或 False。Byte包含 0 到 255 之間的整數。Integ
12、er包含 -32,768 到 32,767 之間的整數。Currency-922,337,203,685,477.5808 到 922,337,203,685,477.5807。Long包含 -2,147,483,648 到 2,147,483,647 之間的整數。Single包含單精度浮點數,負數范圍從 -3.402823E38 到 -1.401298E-45,正數范圍從 1.401298E-45 到 3.402823E38。Double包含雙精度浮點數,負數范圍從 -1.79769313486232E308 到 -4.94065645841247E-324,正數范圍從 4.94065645
13、841247E-324 到 1.79769313486232E308。Date (Time)包含表示日期的數字,日期范圍從公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。String包含變長字符串,最大長度可為 20 億個字符。Object包含對象。Error包含錯誤號。您可以使用轉換函數來轉換數據的子類型。另外,可使用 VarType 函數返回數據的 Variant 子類型。第四課 VBScript變量什么是變量?變量是一種使用方便的占位符,用于引用計算機內存地址,該地址可以存儲 Script 運行時可更改的程序信息。例如,可以創建一個名為 ClickCount 的
14、變量來存儲用戶單擊 Web 頁面上某個對象的次數。使用變量并不需要了解變量在計算機內存中的地址,只要通過變量名引用變量就可以查看或更改變量的值。在 VBScript 中只有一個基本數據類型,即 Variant,因此所有變量的數據類型都是 Variant。聲明變量聲明變量的一種方式是使用 Dim 語句、Public 語句和 Private 語句在 Script 中顯式聲明變量。例如: Dim DegreesFahrenheit聲明多個變量時,使用逗號分隔變量。例如: Dim Top, Bottom, Left, Right另一種方式是通過直接在 Script 中使用變量名這一簡單方式隱式聲明變量
15、。這通常不是一個好習慣,因為這樣有時會由于變量名被拼錯而導致在運行 Script 時出現意外的結果。因此,最好使用 Option Explicit 語句顯式聲明所有變量,并將其作為 Script 的第一條語句。 命名規則變量命名必須遵循 VBScript 的標準命名規則。變量命名必須遵循: ·第一個字符必須是字母。 ·不能包含嵌入的句點。 ·長度不能超過 255 個字符。 ·在被聲明的作用域內必須唯一。 變量的作用域與存活期變量的作用域由聲明它的位置決定。如果在過程中聲明變量,則只有該過程中的代碼可以訪問或更改變量值,此時變量具有局部作用域并被稱為過程級
16、變量。如果在過程之外聲明變量,則該變量可以被 Script 中所有過程所識別,稱為 Script 級變量,具有 Script 級作用域。 變量存在的時間稱為存活期。Script 級變量的存活期從被聲明的一刻起,直到 Script 運行結束。對于過程級變量,其存活期僅是該過程運行的時間,該過程結束后,變量隨之消失。在執行過程時,局部變量是理想的臨時存儲空間。可以在不同過程中使用同名的局部變量,這是因為每個局部變量只被聲明它的過程識別。 給變量賦值創建如下形式的表達式給變量賦值:變量在表達式左邊,要賦的值在表達式右邊。例如: B = 200標量變量和數組變量多數情況下,只需為聲明的變量賦一個值。只
17、包含一個值的變量被稱為標量變量。有時候,將多個相關值賦給一個變量更為方便,因此可以創建包含一系列值的變量,稱為數組變量。數組變量和標量變量是以相同的方式聲明的,唯一的區別是聲明數組變量時變量名后面帶有括號 ( )。下例聲明了一個包含 11 個元素的一維數組: Dim A(10)雖然括號中顯示的數字是 10,但由于在 VBScript 中所有數組都是基于 0 的,所以這個數組實際上包含 11 個元素。在基于 0 的數組中,數組元素的數目總是括號中顯示的數目加 1。這種數組被稱為固定大小的數組。 在數組中使用索引為數組的每個元素賦值。從 0 到 10,將數據賦給數組的元素,如下所示: A(0) =
18、 256A(1) = 324A(2) = 100. . .A(10) = 55與此類似,使用索引可以檢索到所需的數組元素的數據。例如: . . . SomeVariable = A(8) . . . 數組并不僅限于一維。數組的維數最大可以為 60(盡管大多數人不能理解超過 3 或 4 的維數)。聲明多維數組時用逗號分隔括號中每個表示數組大小的數字。在下例中,MyTable 變量是一個有 6 行和 11 列的二維數組: Dim MyTable(5, 10)在二維數組中,括號中第一個數字表示行的數目,第二個數字表示列的數目。 也可以聲明動態數組,即在運行 Script 時大小發生變化的數組。對數組
19、的最初聲明使用 Dim 語句或 ReDim 語句。但是對于動態數組,括號中不包含任何數字。例如: Dim MyArray()ReDim AnotherArray()要使用動態數組,必須隨后使用 ReDim 確定維數和每一維的大小。在下例中,ReDim 將動態數組的初始大小設置為 25,而后面的 ReDim 語句將數組的大小重新調整為 30,同時使用 Preserve 關鍵字在重新調整大小時保留數組的內容。 ReDim MyArray(25). . . ReDim Preserve MyArray(30)重新調整動態數組大小的次數是沒有任何限制的,但是應注意:將數組的大小調小時,將會丟失被刪除元
20、素的數據。第五課 VBScript常數什么是常數?常數是具有一定含義的名稱,用于代替數字或字符串,其值從不改變。VBScript 定義了許多固有常數。詳細信息,請參閱 VBScript 語言參考。 創建常數您可以使用 Const 語句在 VBScript 中創建用戶自定義常數。使用 Const 語句可以創建名稱具有一定含義的字符串型或數值型常數,并給它們賦原義值。例如: Const MyString = "這是一個字符串。"Const MyAge = 49請注意字符串文字包含在兩個引號 (" ") 之間。這是區分字符串型常數和數值型常數的最明顯的方法。日
21、期文字和時間文字包含在兩個井號 (#) 之間。例如: Const CutoffDate = #6-1-97#最好采用一個命名方案以區分常數和變量。這樣可以避免在運行 Script 時對常數重新賦值。例如,可以使用“vb”或“con”作常數名的前綴,或將常數名的所有字母大寫。將常數和變量區分開可以在開發復雜的 Script 時避免混亂。第六課 VBScript運算符VBScript 有一套完整的運算符,包括算術運算符、比較運算符、連接運算符和邏輯運算符。運算符優先級當表達式包含多個運算符時,將按預定順序計算每一部分,這個順序被稱為運算符優先級。可以使用括號越過這種優先級順序,強制首先計算表達式的
22、某些部分。運算時,總是先執行括號中的運算符,然后再執行括號外的運算符。但是,在括號中仍遵循標準運算符優先級。 當表達式包含多種運算符時,首先計算算術運算符,然后計算比較運算符,最后計算邏輯運算符。所有比較運算符的優先級相同,即按照從左到右的順序計算比較運算符。算術運算符和邏輯運算符的優先級如下所示:當乘號與除號同時出現在一個表達式中時,按從左到右的順序計算乘、除運算符。同樣當加與減同時出現在一個表達式中時,按從左到右的順序計算加、減運算符。 字符串連接 (&) 運算符不是算術運算符,但是在優先級順序中,它排在所有算術運算符之后和所有比較運算符之前。Is 運算符是對象引用比較運算符。它并
23、不比較對象或對象的值,而只是進行檢查,判斷兩個對象引用是否引用同一個對象。第七課 使用條件語句控制程序執行使用條件語句和循環語句可以控制 Script 的流程。使用條件語句可以編寫進行判斷和重復操作的 VBScript 代碼。在 VBScript 中可使用以下條件語句: · If.Then.Else 語句 · Select Case 語句 使用 If.Then.Else 進行判斷If.Then.Else 語句用于計算條件是否為 True 或 False,并且根據計算結果指定要運行的語句。通常,條件是使用比較運算符對值或變量進行比較的表達式。有關比較運算符的詳細信息,請參閱比
24、較運算符。If.Then.Else 語句可以按照需要進行嵌套。 條件為 True 時運行語句要在條件為 True 時運行單行語句,可使用 If.Then.Else 語句的單行語法。下例示范了單行語法。請注意此例省略了關鍵字 Else。 Sub FixDate()Dim myDatemyDate = #2/13/95#If myDate < Now Then myDate = NowEnd Sub要運行多行代碼,必須使用多行(或塊)語法。多行(或塊)語法包含 End If 語句,如下所示: Sub AlertUser(value)If value = 0 ThenAlertLabel.Fo
25、reColor = vbRedAlertLabel.Font.Bold = TrueAlertLabel.Font.Italic = TrueEnd IfEnd Sub條件為 True 和 False 時分別運行某些語句可以使用 If.Then.Else 語句定義兩個可執行語句塊:條件為 True 時運行某一語句塊,條件為 False 時運行另一語句塊。 Sub AlertUser(value)If value = 0 ThenAlertLabel.ForeColor = vbRedAlertLabel.Font.Bold = TrueAlertLabel.Font.Italic = True
26、ElseAlertLabel.Forecolor = vbBlackAlertLabel.Font.Bold = FalseAlertLabel.Font.Italic = FalseEnd IfEnd Sub對多個條件進行判斷If.Then.Else 語句的一種變形允許您從多個條件中選擇,即添加 ElseIf 子句以擴充 If.Then.Else 語句的功能,使您可以控制基于多種可能的程序流程。例如: Sub ReportValue(value)If value = 0 ThenMsgBox valueElseIf value = 1 ThenMsgBox valueElseIf value
27、 = 2 thenMsgbox valueElseMsgbox "數值超出范圍!"End If可以添加任意多個 ElseIf 子句以提供多種選擇。使用多個 ElseIf 子句經常會變得很累贅。在多個條件中進行選擇的更好方法是使用 Select Case 語句。 使用 Select Case 進行判斷Select Case 結構提供了 If.Then.ElseIf 結構的一個變通形式,可以從多個語句塊中選擇執行其中的一個。Select Case 語句提供的功能與 If.Then.Else 語句類似,但是可以使代碼更加簡練易讀。 Select Case 結構在其開始處使用一個只
28、計算一次的簡單測試表達式。表達式的結果將與結構中每個 Case 的值比較。如果匹配,則執行與該 Case 關聯的語句塊: Select Case Document.Form1.CardType.Options(SelectedIndex).TextCase "MasterCard"DisplayMCLogoValidateMCAccountCase "Visa"DisplayVisaLogoValidateVisaAccountCase "American Express"DisplayAMEXCOLogoValidateAMEXCO
29、AccountCase ElseDisplayUnknownImagePromptAgainEnd Select請注意 Select Case 結構只計算開始處的一個表達式(只計算一次),而 If.Then.ElseIf 結構計算每個 ElseIf 語句的表達式,這些表達式可以各不相同。僅當每個 ElseIf 語句計算的表達式都相同時,才可以使用 Select Case 結構代替 If.Then.ElseIf 結構。第八課 使用循環語句使用循環重復執行代碼循環用于重復執行一組語句。循環可分為三類:一類在條件變為 False 之前重復執行語句,一類在條件變為 True 之前重復執行語句,另一類按
30、照指定的次數重復執行語句。 在 VBScript 中可使用下列循環語句: ·Do.Loop: 當(或直到)條件為 True 時循環。 ·While.Wend: 當條件為 True 時循環。 ·For.Next: 指定循環次數,使用計數器重復運行語句。 ·For Each.Next: 對于集合中的每項或數組中的每個元素,重復執行一組語句。 使用 Do 循環可以使用 Do.Loop 語句多次(次數不定)運行語句塊。當條件為 True 時或條件變為 True 之前,重復執行語句塊。 當條件為 True 時重復執行語句While 關鍵字用于檢查 Do.Loop
31、語句中的條件。有兩種方式檢查條件:在進入循環之前檢查條件(如下面的 ChkFirstWhile 示例);或者在循環至少運行完一次之后檢查條件(如下面的 ChkLastWhile 示例)。在 ChkFirstWhile 過程中,如果 myNum 的初始值被設置為 9 而不是 20,則永遠不會執行循環體中的語句。在 ChkLastWhile 過程中,循環體中的語句只會執行一次,因為條件在檢查時已經為 False。 Sub ChkFirstWhile()Dim counter, myNumcounter = 0myNum = 20Do While myNum > 10myNum = myNum
32、 - 1counter = counter + 1LoopMsgBox "循環重復了 " & counter & " 次。"End SubSub ChkLastWhile()Dim counter, myNumcounter = 0myNum = 9DomyNum = myNum - 1counter = counter + 1Loop While myNum > 10MsgBox "循環重復了 " & counter & " 次。"End Sub重復執行語句直到條件變為 Tr
33、ueUntil 關鍵字用于檢查 Do.Loop 語句中的條件。有兩種方式檢查條件:在進入循環之前檢查條件(如下面的 ChkFirstUntil 示例);或者在循環至少運行完一次之后檢查條件(如下面的 ChkLastUntil 示例)。只要條件為 False,就會進行循環。 Sub ChkFirstUntil()Dim counter, myNumcounter = 0myNum = 20Do Until myNum = 10myNum = myNum - 1counter = counter + 1LoopMsgBox "循環重復了 " & counter &
34、; " 次。"End SubSub ChkLastUntil()Dim counter, myNumcounter = 0myNum = 1DomyNum = myNum + 1counter = counter + 1Loop Until myNum = 10MsgBox "循環重復了 " & counter & " 次。"End Sub退出循環Exit Do 語句用于退出 Do.Loop 循環。因為通常只是在某些特殊情況下要退出循環(例如要避免死循環),所以可在 If.Then.Else 語句的 True 語句塊中
35、使用 Exit Do 語句。如果條件為 False,循環將照常運行。 在下面的示例中,myNum 的初始值將導致死循環。If.Then.Else 語句檢查此條件,防止出現死循環。 Sub ExitExample()Dim counter, myNumcounter = 0myNum = 9Do Until myNum = 10myNum = myNum - 1counter = counter + 1If myNum < 10 Then Exit DoLoopMsgBox "循環重復了 " & counter & " 次。"End
36、Sub使用 While.WendWhile.Wend 語句是為那些熟悉其用法的用戶提供的。但是由于 While.Wend 缺少靈活性,所以建議最好使用 Do.Loop 語句。 使用 For.NextFor.Next 語句用于將語句塊運行指定的次數。在循環中使用計數器變量,該變量的值隨每一次循環增加或減少。 例如,下面的示例將過程 MyProc 重復執行 50 次。For 語句指定計數器變量 x 及其起始值與終止值。Next 語句使計數器變量每次加 1。 Sub DoMyProc50Times()Dim xFor x = 1 To 50MyProcNextEnd Sub關鍵字 Step 用于指定
37、計數器變量每次增加或減少的值。在下面的示例中,計數器變量 j 每次加 2。循環結束后,total 的值為 2、4、6、8 和 10 的總和。 Sub TwosTotal()Dim j, totalFor j = 2 To 10 Step 2total = total + jNextMsgBox "總和為 " & total & "。"End Sub要使計數器變量遞減,可將 Step 設為負值。此時計數器變量的終止值必須小于起始值。在下面的示例中,計數器變量 myNum 每次減 2。循環結束后,total 的值為 16、14、12、10、8
38、、6、4 和 2 的總和。 Sub NewTotal()Dim myNum, totalFor myNum = 16 To 2 Step -2total = total + myNumNextMsgBox "總和為 " & total & "。"End SubExit For 語句用于在計數器達到其終止值之前退出 For.Next 語句。因為通常只是在某些特殊情況下(例如在發生錯誤時)要退出循環,所以可以在 If.Then.Else 語句的 True 語句塊中使用 Exit For 語句。如果條件為 False,循環將照常運行。 使用 F
39、or Each.NextFor Each.Next 循環與 For.Next 循環類似。For Each.Next 不是將語句運行指定的次數,而是對于數組中的每個元素或對象集合中的每一項重復一組語句。這在不知道集合中元素的數目時非常有用。 在以下示例中,Dictionary 對象的內容用于將文本分別放置在多個文本框中: <HTML><HEAD><TITLE>窗體與元素</TITLE></HEAD><SCRIPT LANGUAGE="VBScript"><!-Sub cmdChange_OnClic
40、kDim d '創建一個變量Set d = CreateObject("Scripting.Dictionary")d.Add "0", "Athens" '添加鍵和項目d.Add "1", "Belgrade"d.Add "2", "Cairo"For Each I in dDocument.frmForm.Elements(I).Value = D.Item(I)NextEnd Sub-></SCRIPT><BO
41、DY><CENTER><FORM NAME="frmForm"<Input Type = "Text"><p><Input Type = "Text"><p><Input Type = "Text"><p><Input Type = "Text"><p><Input Type = "Button" NAME="cmdChange"
42、VALUE="單擊此處"><p></FORM></CENTER></BODY></HTML>第九課 VBScript過程過程分類在 VBScript 中,過程被分為兩類:Sub 過程和 Function 過程。 Sub 過程Sub 過程是包含在 Sub 和 End Sub 語句之間的一組 VBScript 語句,執行操作但不返回值。Sub 過程可以使用參數(由調用過程傳遞的常數、變量或表達式)。如果 Sub 過程無任何參數,則 Sub 語句必須包含空括號 ()。 下面的 Sub 過程使用兩個固有的(或內置的)
43、VBScript 函數,即 MsgBox 和 InputBox,來提示用戶輸入信息。然后顯示根據這些信息計算的結果。計算由使用 VBScript 創建的 Function 過程完成。此過程在以下討論之后演示。 Sub ConvertTemp()temp = InputBox("請輸入華氏溫度。", 1)MsgBox "溫度為 " & Celsius(temp) & " 攝氏度。"End SubFunction 過程Function 過程是包含在 Function 和 End Function 語句之間的一組 VBScr
44、ipt 語句。Function 過程與 Sub 過程類似,但是 Function 過程可以返回值。Function 過程可以使用參數(由調用過程傳遞的常數、變量或表達式)。如果 Function 過程無任何參數,則 Function 語句必須包含空括號 ()。Function 過程通過函數名返回一個值,這個值是在過程的語句中賦給函數名的。Function 返回值的數據類型總是 Variant。 在下面的示例中,Celsius 函數將華氏度換算為攝氏度。Sub 過程 ConvertTemp 調用此函數時,包含參數值的變量被傳遞給函數。換算結果返回到調用過程并顯示在消息框中。 Sub Conver
45、tTemp()temp = InputBox("請輸入華氏溫度。", 1)MsgBox "溫度為 " & Celsius(temp) & " 攝氏度。"End SubFunction Celsius(fDegrees)Celsius = (fDegrees - 32) * 5 / 9End Function過程的數據進出給過程傳遞數據的途徑是使用參數。參數被作為要傳遞給過程的數據的占位符。參數名可以是任何有效的變量名。使用 Sub 語句或 Function 語句創建過程時,過程名之后必須緊跟括號。括號中包含所有參數,參
46、數間用逗號分隔。例如,在下面的示例中,fDegrees 是傳遞給 Celsius 函數的值的占位符: Function Celsius(fDegrees)Celsius = (fDegrees - 32) * 5 / 9End Function要從過程獲取數據,必須使用 Function 過程。請記住,Function 過程可以返回值;Sub 過程不返回值。 在代碼中使用 Sub 和 Function 過程調用 Function 過程時,函數名必須用在變量賦值語句的右端或表達式中。例如: Temp = Celsius(fDegrees)或 MsgBox "溫度為 " &am
47、p; Celsius(fDegrees) & " 攝氏度。"調用 Sub 過程時,只需輸入過程名及所有參數值,參數值之間使用逗號分隔。不需使用 Call 語句,但如果使用了此語句,則必須將所有參數包含在括號之中。 下面的示例顯示了調用 MyProc 過程的兩種方式。一種使用 Call 語句;另一種則不使用。兩種方式效果相同。 Call MyProc(firstarg, secondarg)MyProc firstarg, secondarg請注意當不使用 Call 語句進行調用時,括號被省略。第十課 VBScript編碼約定什么是編碼約定?·對象、變量和過
48、程的命名約定 ·注釋約定 ·文本格式和縮進指南 使用一致的編碼約定的主要原因是使 Script 或 Script 集的結構和編碼樣式標準化,這樣代碼易于閱讀和理解。使用好的編碼約定可以使源代碼明白、易讀、準確,更加直觀且與其他語言約定保持一致。 常數命名約定VBScript 的早期版本不允許創建用戶自定義常數。如果要使用常數,則常數以變量的方式實現,且全部字母大寫以和其他變量區分。常數名中的多個單詞用下劃線 (_) 分隔。例如: USER_LIST_MAXNEW_LINE這種標識常數的方法依舊可行,但您還可以選擇其他方案,用 Const 語句創建真正的常數。這個約定使用大小
49、寫混合的格式,并以“con”作為常數名的前綴。例如: conYourOwnConstant變量命名約定出于易讀和一致性的目的,請在 VBScript 代碼中使用以下變量命名約定: 子類型前綴示例BooleanblnblnFoundBytebytbytRasterDataDate (Time)dtmdtmStartDoubledbldblToleranceErrorerrerrOrderNumIntegerintintQuantityLonglnglngDistanceObjectobjobjCurrentSinglesngsngAverageStringstrstrFirstName變量作用域
50、變量應定義在盡量小的作用域中。VBScript 變量的作用域如下所示: 作用域聲明變量處可見性過程級事件、函數或子過程在聲明變量的過程中可見Script 級HTML 頁面的 HEAD 部分,任何過程之外在 Script 的所有過程中可見變量作用域前綴隨著 Script 代碼長度的增加,有必要快速區分變量的作用域。在類型前綴前面添加一個單字符前綴可以實現這一點,而不致使變量名過長。 作用域前綴示例過程級無dblVelocityScript 級ssblnCalcInProgress描述性變量名和過程名變量名或過程名的主體應使用大小寫混合格式,并且盡量完整地描述其目的。另外,過程名應以動詞開始,例如
51、 InitNameArray 或 CloseDialog。 對于經常使用的或較長的名稱,推薦使用標準縮寫以使名稱保持在適當的長度內。通常多于 32 個字符的變量名會變得難以閱讀。使用縮寫時,應確保在整個 Script 中保持一致。例如,在一個 Script 或 Script 集中隨意切換 Cnt 和 Count 將造成混亂。 對象命名約定下表列出了 VBScript 中可能用到的對象命名約定(推薦): 對象類型前綴示例3D 面板pnlpnlGroup動畫按鈕anianiMailBox復選框chkchkReadOnly組合框、下拉列表框cbocboEnglish命令按鈕cmdcmdExit公共對
52、話框dlgdlgFileOpen框架frafraLanguage水平滾動條hsbhsbVolume圖像imgimgIcon標簽lbllblHelpMessage直線linlinVertical列表框lstlstPolicyCodes旋鈕spnspnPages文本框txttxtLastName垂直滾動條vsbvsbRate滑塊sldsldScale代碼注釋約定所有過程的開始部分都應有描述其功能的簡要注釋。這些注釋并不描述細節信息(如何實現功能),這是因為細節有時要頻繁更改。這樣就可以避免不必要的注釋維護工作以及錯誤的注釋。細節信息由代碼本身及必要的內部注釋來描述。 當傳遞給過程的參數的用途不明顯
53、,或過程對參數的取值范圍有要求時,應加以說明。如果過程改變了函數和變量的返回值(特別是通過參數引用來改變),也應在過程的開始部分描述該返回值。 過程開始部分的注釋應包含以下區段標題。相關樣例,請參閱后面的“格式化代碼”部分。 區段標題注釋內容/td 目的過程的功能(不是實現功能的方法)。/td 假設其狀態影響此過程的外部變量、控件或其他元素的列表。/td 效果過程對每個外部變量、控件或其他元素的影響效果的列表。/td 輸入每個目的不明顯的參數的解釋。每個參數都應占據單獨一行并有其內部注釋。/td 返回返回值的解釋。請記住以下幾點: ·每個重要的變量聲明都應有內部注釋,描述變量的用途。
54、 ·應清楚地命名變量、控件和過程,僅在說明復雜細節時需要內部注釋。 ·應在 Script 的開始部分包含描述該 Script 的概述,列舉對象、過程、運算法則、對話框和其他系統從屬物。有時一段描述運算法則的假碼是很有用的。 格式化代碼應盡可能多地保留屏空間,但仍允許用代碼格式反映邏輯結構和嵌套。以下為幾點提示: ·標準嵌套塊應縮進 4 個空格。 ·過程的概述注釋應縮進 1 個空格。 ·概述注釋后的最高層語句應縮進 4 個空格,每一層嵌套塊再縮進 4 個空格。例如: '*' 目的: 返回指定用戶在 UserList 數組中第一次出
55、現的位置。' 輸入: strUserList(): 所查找的用戶列表。' strTargetUser: 要查找的用戶名。' 返回: strTargetUser 在 strUserList 數組中第一次出現時的索引。' 如果目標用戶未找到,返回 -1。'*Function intFindUser (strUserList(), strTargetUser)Dim i ' 循環計數器。Dim blnFound ' 發現目標的標記。intFindUser = -1i = 0 ' 初始化循環計數器。Do While i <= Ubo
56、und(strUserList) and Not blnFoundIf strUserList(i) = strTargetUser Then blnFound = True ' 標記設為 True。intFindUser = i ' 返回值設為循環計數器。End Ifi = i + 1 ' 循環計數器加 1。LoopEnd Function第十一課 深入VBScript學習高級 VBScript 技術的最快方法是閱讀大量的樣例。同時更好地理解對象模型有助于深入學習 VBScript。 ·ActiveX 控件常見問題解答 ·頁面樣例 ·熱點
57、鏈接頁面第十二課 VBScript頁面的簡單樣例使用 Microsoft? Internet Explorer 可以查看用以下 HTML 代碼制作的頁面。如果單擊頁面上的按鈕,可看到 VBScript 的運行結果。 <HTML><HEAD><TITLE>一個簡單首頁</TITLE><SCRIPT LANGUAGE="VBScript"><!-Sub Button1_OnClickMsgBox "Mirabile visu."End Sub-></SCRIPT></H
58、EAD><BODY><H3>一個簡單首頁</H3><HR><FORM><INPUT NAME="Button1" TYPE="BUTTON" VALUE="單擊此處"></FORM></BODY></HTML> 結果雖然有點簡單:一個對話框顯示一個拉丁短語(意為“看起來非常漂亮”)。然而這段代碼實際上作了許多事情。 當 Internet Explorer 讀取頁面時,找到 <SCRIPT> 標記,識別出 VBS
59、cript 代碼并保存代碼。單擊按鈕時,Internet Explorer 使按鈕與代碼連接,并運行該過程。 <SCRIPT> 標記中的 Sub 過程是一個事件過程。過程名包含兩部分:一部分為按鈕名,即 Button1(從 <INPUT> 標記中的 NAME 屬性獲取),另一部分為事件名,即 OnClick。兩部分由下劃線 (_) 連接。單擊按鈕時,Internet Explorer 查找并運行相應的事件過程,即 Button1_OnClick。 Internet Explorer 在 Internet Explorer Scripting Object Model 文
60、檔中定義了可用于窗體控件的事件。 頁面也可以使用控件與過程的組合。VBScript 與窗體顯示了控件之間的一些簡單交互作用。 向事件附加代碼的其他方法上述的方法也許是最簡單和最常用的,但也可以使用另外兩種方法向事件附加 VBScript 代碼。一種方法是在定義控件的標記中添加較短的內部代碼。例如在單擊按鈕時,下面的 <INPUT> 標記執行與前面示例相同的操作: <INPUT NAME="Button1" TYPE="BUTTON"VALUE="單擊此處" OnClick='MsgBox "Mirabile visu."'>請注意函數調用包含在單引號中,MsgBox 函數的字符串包含在雙引號中。只要用冒號 (:) 分隔語句,就可以使用多條語句。 另一種方法是在 <SCRIPT> 標記中指定特定的控件和事件: <SCRIPT LANGUAGE="VBS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 站內志愿服務管理考核試卷
- 機床結構優化技術考核試卷
- 創業投資市場競爭優勢分析考核試卷
- 電氣設備光電子器件考核試卷
- 天體物理觀測與實踐考核試卷
- 復印技術在紙箱包裝印刷的重要性考核試卷
- 硅冶煉操作技能培訓考核試卷
- 紙板制造中的廢紙回收利用技術考核試卷
- 江西應用科技學院《工程師管理(全英文)》2023-2024學年第二學期期末試卷
- 吉林鐵道職業技術學院《大數據審計實務》2023-2024學年第二學期期末試卷
- 2025商業綜合體委托經營管理合同書
- 2024-2025學年北師大版生物七年級下冊期中模擬生物試卷(含答案)
- 人工智能導論課件 第十三章 類腦智能
- 河北單招時政試題及答案
- 2024-2025班主任的培訓心得體會(29篇)
- 實驗14 探究液體內部壓強的特點-中考物理必考實驗專項復習
- 7 請到我的家鄉來(第一課時)(教學設計)統編版道德與法治三年級下冊
- 護理不良事件案例分析及警示
- B超健康知識講座課件
- 干部履歷表(中共中央組織部2015年制)
- 貴溪鮑家礦業有限公司采礦權出讓評估報告書
評論
0/150
提交評論