HOWTO:使用 Script 控制項呼叫函式

文章翻譯 文章翻譯
文章編號: 184740 - 檢視此文章適用的產品。
本文曾發行於 CHT184740
全部展開 | 全部摺疊

在此頁中

結論

本文件提供 Script 控制項的範例程式碼,展示從 Visual Basic 呼叫指令碼函式的各種方法。

其他相關資訊

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

Script 控制項可以裝載 VBScript、JavaScript 和任何其他相容的指令碼語言,如此您的使用者便可透過和用 VBScript 或 JavaScript 來為網頁提供額外功能的類似方式,為您的應用程式撰寫指令碼。

下列 Microsoft Knowledge Base 中的文件描述如何取得 Script 控制項:
184739:INFO:Where to Obtain the Script Control

Script 控制項提供四種方法來呼叫 Sub 和 Function 指令碼常式:
  • Eval: 評估文字運算式。
  • Run: 執行具名 Sub 或 Function。
  • Execute: 執行指令碼陳述式。
  • 如同 Module 物件的方法。

Eval



呼叫慣例為:
Result = ScriptControl.Eval("某個文字運算式")

您可以用這個方法來呼叫內部指令碼函式以及使用者函式。函式引數會被當作運算式文字中的常值來傳遞,且可以使用以硬式編碼或串連變數的方式。

注意:這個方法無法用來呼叫副程式。

Run



呼叫慣例為:
Result = ScriptControl.Run("名稱", arg1, arg2, ... argn)

您可使用這個方法來呼叫副程式,在該種情況下,傳回的「Result」是空的,而您可以使用另一種呼叫慣例來忽略傳回結果:
ScriptControl.Run "名稱", arg1, arg2, ... argn

注意:「名稱」是 Sub 或 Function 的名稱,您可根據所用的 Sub 或 Function 來決定是否要選用 arg1 ... argn。

Execute



呼叫慣例為:
ScriptControl.Execute "陳述式文字"

這個方法可讓您呼叫任何內建的陳述式或 Sub 常式。您也可以用它來呼叫函式,但傳回結果會被捨棄。

Module 方法



呼叫慣例為:
Result = ScriptControl.Modules(modulename).functionname(arg1, arg2, ...)
ScriptControl.Modules(modulename).subname arg1, arg2, ...

預設的模組會在 GlobalModule 常數中提供,例如:
Result = ScriptControl.Modules(GlobalModule).MyFunction(5)
ScriptControl.Modules(GlobalModule).MySub 5, "A"

如需關於 ScriptControl 模組的詳細資訊,請參閱 Microsoft Knowledge Base 中的下列文件:
184745:HOWTO:Use Script Control Modules and Procedures Collections

範例



  1. 在 Visual Basic 中建立一個新專案。依預設值,會建立 Form1。
  2. 按一下 [Project] 功能表上的 [Components],然後選取 [Microsoft Script Control 1.0] 核取方塊。
  3. 在表單上加入 Script 控制項 (ScriptControl1)、文字方塊 (Text1) 和命令按鈕 (Command1)。將文字方塊的 MultiLine 屬性設定為 True。
  4. 將下列程式碼加入 Form1:
    Private Sub Command1_Click()
    With ScriptControl1
    ' Set script language (VBScript 
    is the default).
    .Language = "VBScript"
    ' Set UI interaction (TRUE is the default).
    .AllowUI 
    = True
    ' Copy the script to the control.
    .AddCode Text1.Text
    ' Demonstrate the 
    Eval method.
    Debug.Print .Eval("AddTwo(5,7)")
    ' Demonstrate the Run method both 
    with and without return values.
    .Run "Hello", "Jane Doe"
    Debug.Print .Run("Hello", 
    "James Smith")
    .Run "AddTwo", 4, 6
    Debug.Print .Run("AddTwo", 7, 8)
    ' Demonstrate 
    the ExecuteStatement method.
    .ExecuteStatement "Hello ""Sue Smith"""
    .ExecuteStatement 
    "AddTwo 9,18"
    .ExecuteStatement "MsgBox CStr(AddTwo(3,8))"
    .Modules(GlobalModule).Hello 
    "Jane Doe"
    Dim oMod As Object
    Set oMod = .Modules(GlobalModule)
    Debug.Print oMod.AddTwo 
    12, 24
    Set oMod = Nothing
    End With
    End Sub
    
    
  5. 執行 Form1,然後開啟 [Debug] 視窗。
  6. 在文字方塊中輸入下列指令碼:
    Sub Hello(YourName)
     MsgBox "Hello " & YourName
    End Sub
    
    Function AddTwo(X1, X2)
     AddTwo = X1 + X2
    End Function
    
    
  7. 按一下 CommandButton。

    注意:下列兩個陳述式不會產生輸出,因為函式傳回值會遺失,而程式碼無法透過任何其他方法 (如全域變數或訊息方塊) 來輸出結果:
    .Run "AddTwo", 4, 6
    .ExecuteStatement "AddTwo 9,18"
    
    

?考

如需取得 Script 控制項的詳細資訊,請參閱 Microsoft Knowledge Base 中的下列文件:
184739:INFO:Where to Obtain the Script Control

(c) Microsoft Corporation 1998,版權所有。
本文件提供者:Malcolm Stewart,Microsoft Corporation


本文件是根據 Microsoft Knowledgebase 文件編號 Q184740 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

http://support.microsoft.com/support/kb/articles/Q184/7/40.asp

屬性

文章編號: 184740 - 上次校閱: 2003年10月15日 - 版次: 1.0
這篇文章中的資訊適用於:
  • 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 6.0 Enterprise Edition
  • 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
關鍵字:?
kbhowto KB184740
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com