使用してスクリプト コントロール モジュールとプロシージャ コレクションする方法

文書翻訳 文書翻訳
文書番号: 184745 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料ではセグメント コードに、Microsoft スクリプト コントロールのモジュールとプロシージャのプロパティを使用する方法について説明します。 どのように動的に判定引数の数しことができます、プロシージャが、関数かサブも示します。

詳細

Microsoft スクリプト コントロールには機能別のモジュールにセグメントのスクリプトをホスト アプリケーションを備えています。 既定のモジュール、「グローバル」は常に存在します。 別のモジュールにある同じ名前のプロシージャがあります (つまり、プロシージャ名がモジュール スコープある)。

Microsoft スクリプト コントロール、ホスト アプリケーションを動的に手順は、受け取る引数の数と同様、関数または Sub プロシージャであるかどうかを決定できるようにするプロシージャのプロパティもします。 これにより、ホスト アプリケーションをユーザーに正しい数のパラメーター値を求めることができます。

スクリプト コントロールの [モジュール] </a0> プロパティは、モジュールのオブジェクトのコレクションを含むオブジェクトです。 それもは、次のプロパティとメソッドがあります。
  • カウント: モジュールの数です。
  • Item(x): 1 つのモジュール オブジェクトを返します。
  • 名前を追加: 指定された名前で空白のモジュールを追加します。
モジュール オブジェクトにも、次のプロパティとメソッドがあります。
  • 名前: モジュール名。
  • 手順: プロシージャ オブジェクト。
  • AddCode コード: モジュールにコードを追加します。
  • 実行の名前、引数: 名前のプロシージャを実行します。
プロシージャのオブジェクトのコレクションをプロシージャのオブジェクトに格納します。 それもは、次のプロパティとメソッドがあります。
  • カウント: モジュール内のプロシージャの数。
  • Item(x): 1 つのプロシージャ オブジェクトを返します。
プロシージャ オブジェクトは、次のプロパティとメソッドが。
  • 名前: プロシージャ名。
  • HasReturnValue: 手順は Sub プロシージャまたは関数であるかどうかを指定します。
  • NumArgs: 引数の手順の数。
注: すべてがプロパティと、一覧に表示されているオブジェクトのメソッドが与えられます、だけこの資料に関連。

次の例、これらのプロパティおよびメソッドを使用する方法を示す対話型のプログラムに示します。

重要: マイクロソフトは提供プログラミング言語の使用方法の一例としてのみ、姿表現または明示、黙示、黙示または商品性および特定目的に対する適合性に限らずなどです。 この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。

次の使用例

  1. Visual Basic では、新しいプロジェクト (Form1 が既定で作成されます) を作成します。
  2. プロジェクト メニューの [コンポーネント] をクリックし、[Microsoft スクリプト制御 1. 0] チェック ボックスを [します。
  3. スクリプト コントロールを追加 (ScriptControl1)、テキスト ボックス ([テキスト 1])、3 つのコマンド ボタン (Command1、Command2、Command3)、およびリスト 2 (List1、List2) を Form1 にボックスします。 TRUE の場合には、テキスト ボックスの複数行プロパティを設定します。 30 文字の 5 行に合わせて、テキスト ボックスをサイズします。
  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. List1、アドインを [し、グローバル モジュールに追加するコードの追加を実行します。
  9. テキスト ボックスに次のスクリプトを入力:
          Function Calc(X, Y)
            Calc = X * Y
          End Function
    
          Sub Test()
            MsgBox "The Test Sub in Module Mod2"
          End Sub
    						
  10. List1 で Mod2 を選択し、グローバル モジュールに追加するコードの追加を実行します。
  11. さまざまなモジュールやプロシージャを [します。 メッセージ ボックスが表示され、プロシージャを選択すると、プロシージャが引数の数と同様に、戻り値かどうかを示すかかります。
  12. プロシージャを選択、した後に実行するプロシージャの実行をクリックします。 コードは、引数を使用数を指定"と結果がさまざまなメッセージ ボックスが表示されます。
注意: 未解決のインポート要求があるため、処理チェックは延期されました:
  • グローバル モジュール名が常にあります「グローバル」コントロールのバージョンまたはローカライズに応じて。 ハードの代わりに、GlobalName 定数を使用 - 単語「グローバル」をコーディングします。
  • 個々 のモジュールやプロシージャを削除する方法はありません。 すべてのコードを消去するスクリプト コントロールの.Clear メソッドを使用するとして必要。 プロシージャは、同じ名前のプロシージャと共に、.AddCode メソッドを使用して上書きできます。

関連情報

スクリプト コントロールの取得については、ください「以下「サポート技術情報」(Microsoft Knowledge Base)。
184739: 情報: スクリプト コントロールを取得する場所

追加情報およびグローバル モジュールでプロシージャの呼び出しでの使用例ください「以下「サポート技術情報」(Microsoft Knowledge Base)。
184740: スクリプト コントロールを使用して関数を呼び出す方法

Microsoft スクリプト コントロール トピックの検索:
   HasReturnValue Property
   NumArgs Property
   AddCode Method
   Run Method
   Modules Collection
   Procedures Collection
				

プロパティ

文書番号: 184745 - 最終更新日: 2004年7月13日 - リビジョン: 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
キーワード:?
kbhowto kbscript kbmt KB184745 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:184745
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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