如何使用指令碼控制項模組和程序集合

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:184745
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您,如何使用 Microsoft 指令碼控制項區段的程式碼的模組] 和 [程序的屬性。它也示範如何以動態方式判斷引數數目和函式] 或 [Sub 程序的是否。
其他相關資訊
Microsoft 指令碼控制項包括功能,可讓主應用程式區段的指令碼到不同的模組。預設的模組 「 全域 」 會一直存在。不同的模組可能含有相同名稱的程序 (也就是程序名稱有模組範圍)。

Microsoft 指令碼控制項還包括程序屬性,以允許主機應用程式,以動態方式判斷 [程序是一個函式或一個 Sub,以及它所預期的引數數目。這可讓主機應用程式提示使用者輸入正確的參數值數目。

指令碼控制項的 [模組] 屬性是物件,包含模組物件的集合。它有下列的屬性和方法:
  • 計數: 模組的數目。
  • Item(x): 傳回單一的 [模組] 物件。
  • 新增名稱: 加入空白模組具有指定名稱。
模組物件有下列的屬性和方法:
  • 名稱: 模組名稱。
  • 程序: 程序物件。
  • AddCode 程式碼: 將程式碼新增至模組。
  • 執行的名稱、 引數: 執行已命名的程序。
程序物件包含程序的物件的集合。它有下列的屬性和方法:
  • 計數: 在模組中的程序的數目。
  • Item(x): 傳回單一的程序物件。
程序物件有下列的屬性和方法:
  • 名稱: 這個程序名稱。
  • HasReturnValue: 指出程序是否為一個 Sub 或一個函式。
  • NumArgs: 的程序需要的引數數目。
注意: 不是所有的屬性和方法所列的物件會提供,只是那些與本文相關。

下列範例會提供說明如何使用這些屬性和方法的交談式程式:

重要: Microsoft 提供程式設計範例僅,為了說明不提供任何明示或默示的保證,包括但不是限於適售性以及適合某特定用途之默示擔保責任。本文假設您已熟悉我們所示範的程式設計語言,以及用來建立和偵錯程序的工具。

範例

  1. 在 Visual Basic 建立新的專案 (Form1 建立根據預設值)。
  2. 按一下 [元件],請在 [專案] 功能表上,然後選取 ["Microsoft 指令碼控制 1.0 」] 核取方塊。
  3. 新增指令碼控制項 (ScriptControl1) 文字方塊 (文字 1) 三個命令按鈕 (Command1 Command2,Command3) 並兩個清單方塊 (List1 List2) 中以 Form1。將文字方塊的多行的屬性設定為 TRUE。以容納 5 行 30 個字元的文字方塊大小。
  4. 將下列程式碼加入至 Form1:
          Private Sub Command1_Click()        ScriptControl1.Modules.Add Text1.Text        Form_Activate      End Sub      Private Sub Command2_Click()        ScriptControl1.Modules(List1).AddCode Text1.Text        List1_Click      End Sub      Private Sub Command3_Click()      Dim RetVal As Variant, m As Variant        Set m = ScriptControl1.Modules(List1.Text)        With m.Procedures(List2.Text)          Select Case .NumArgs            Case 0              RetVal = m.Run(List2.Text)            Case 1              RetVal = m.Run(List2.Text, 5)            Case 2              RetVal = m.Run(List2.Text, 4, 23)            Case Else              MsgBox "Procedure has too many arguments"          End Select          If .HasReturnValue Then            MsgBox List2.Text & " returned: " & RetVal          End If        End With      End Sub      Private Sub Form_Activate()      Dim m As Variant        List1.Clear        With SCriptControl1          .Language = "VBScript"          .AllowUI = True          For Each m In .Modules            List1.AddItem m.Name          Next m        End With      End Sub      Private Sub Form_Load()        Command1.Caption = "Add Module"        Command2.Caption = "Add Code"        Command3.Caption = "Run Procedure"      End Sub      Private Sub List1_Click()      Dim m As String, p As Variant        m = List1        List2.Clear        If m = "" Then Exit Sub        For Each p In ScriptControl1.Modules(m).Procedures          List2.AddItem p.Name        Next p      End Sub      Private Sub List2_Click()      Dim m As String, p As String, r As Boolean, a As Long        m = List1        p = List2        With ScriptControl1.Modules(m).Procedures(p)          r = .HasReturnValue          a = .NumArgs        End With        MsgBox m & "." & p & " has " & IIf(r, "a", "no") & _               " return value and " & a & " arguments"      End Sub						
  5. 執行 Form1。
  6. 建立新的模組,只要在 [文字] 方塊中鍵入下列並按一下 [加入模組:
          Mod2						
  7. 在 [文字] 方塊中鍵入下列指令碼:
          Function Calc(X)        Calc = X * 2      End Function						
  8. 在 [清單 1 中, 選取 [通用,然後按一下 [新增程式碼],即可將加入至全域的模組。
  9. 在 [文字] 方塊中鍵入下列指令碼:
          Function Calc(X, Y)        Calc = X * Y      End Function      Sub Test()        MsgBox "The Test Sub in Module Mod2"      End Sub						
  10. 在 [清單 1,選取 Mod2,,然後按一下 [新增程式碼],即可將加入至全域的模組。
  11. 按一下 [上各種不同的模組和程序。當您選取 [程序會出現一個訊息方塊指出程序具有傳回值,以及引數數目花。
  12. 之後選取 [程序按一下 [執行程序來執行它。程式碼決定要使用引數數目,您會看到不同的訊息方塊,以結果。
附註:
  • 全域的模組名稱永遠可能不通用 」 根據控制版本或當地語系化。使用 GlobalName 常數代替硬-編碼 Global"這個字。
  • 沒有要移除個別的模組或程序方法。您必須使用的指令碼控制項.Clear 方法來清除所有的程式碼。您可以利用.AddCode 方法使用相同名稱的程序覆寫程序。
参考
取得指令碼控制項的相關資訊,請參閱 「 Microsoft 知識庫 」 中下列文件:
184739: 資訊: 何處取得指令碼控制

如需詳細資訊,以及在呼叫程序,在 [全域] 模組中的範例,請參閱 「 Microsoft 知識庫 」 中下列文:
184740: 如何呼叫函式使用指令碼控制

Microsoft 指令碼控制項說明主題:
   HasReturnValue Property   NumArgs Property   AddCode Method   Run Method   Modules Collection   Procedures Collection				
kbVBA500 kbVBp500 kbVBp400 kbVBp600 kbScript kbCtrl kbdse kbDSupport kbVBp

警告:本文為自動翻譯

內容

文章識別碼:184745 - 最後檢閱時間:12/05/2015 08:36:51 - 修訂: 4.1

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 4.0 Standard Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 32-Bit Enterprise Edition, Microsoft Visual Basic for Applications 5.0

  • kbnosurvey kbarchive kbmt kbhowto kbscript KB184745 KbMtzh
意見反應