19

これは誰かにとっては簡単な質問であることは知っていますが、関数モジュールが何であるかを理解していなかったため、関数モジュールを実際に使用したことがありません。

したがって、これを使用できるものはたくさんありますが (冗長性を削減します)、フォームからサブ (ボタンクリックなど) プロシージャを呼び出す方法を知りたいです。

私はこれを試しました...

Sub Command_Click()
    Call "pptCreator"
End Sub

私はそれがかなり悪いことを知っていますが、これを手順に組み込む方法がわかりません.

4

5 に答える 5

34

Microsoft Access で呼び出すことができるさまざまな方法を次に示します。

モジュールからフォームサブまたは関数を呼び出すには

呼び出しているフォームのサブルーチンは、次のようにパブリックである必要があります。

Public Sub DoSomething()
  MsgBox "Foo"
End Sub

次のようにサブを呼び出します。

Call Forms("form1").DoSomething

電話をかける前にフォームを開いておく必要があります。

イベント プロシージャを呼び出すには、フォーム内でパブリック プロシージャを呼び出し、このパブリック プロシージャ内でイベント プロシージャを呼び出す必要があります。

フォームからモジュール内のサブルーチンを呼び出すには

Public Sub DoSomethingElse()
  MsgBox "Bar"
End Sub

...イベント プロシージャから直接呼び出すだけです。

Call DoSomethingElse

イベント プロシージャを使用せずにフォームからサブルーチンを呼び出すには

必要に応じて、コントロールの下にイベント プロシージャを作成しなくても、実際に関数をフォーム コントロールのイベントにバインドできます。これを行うには、まず次のように、サブではなくモジュールにパブリック関数が必要です。

Public Function DoSomethingElse()
  MsgBox "Bar"
End Function

次に、フォームにボタンがある場合は、[イベント プロシージャ] をプロパティ ウィンドウの OnClick イベントに配置する代わりに、次のように配置します。

=DoSomethingElse()

ボタンをクリックすると、モジュール内のパブリック関数が呼び出されます。

プロシージャの代わりに関数を呼び出すには

サブルーチンを呼び出す場合は、次のようになります。

Call MySub(MyParameter)

次に、関数の呼び出しは次のようになります。

Result=MyFunction(MyFarameter)

ここで、Result は関数によって返される型の変数です。

注: Call キーワードは必ずしも必要ではありません。ほとんどの場合、次のようにサブルーチンを呼び出すことができます。

MySub(MyParameter)
于 2009-07-02T02:48:09.743 に答える
3

サブ プロシージャの呼び出し – 3 方法の手法

作成したプロシージャまたは Visual Basic 言語の一部であるプロシージャを取得したら、それを使用できます。プロシージャを使用することは、それを呼び出すとも呼ばれます。

プロシージャを呼び出す前に、まずそれを使用するコードのセクションを見つける必要があります。単純なプロシージャを呼び出すには、その名前を入力します。次に例を示します。

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"

msgbox strFullName
End Sub

Sub Exercise()
    CreateCustomer
End Sub

プロシージャの名前を使用して呼び出すだけでなく、その前に Call キーワードを付けることもできます。次に例を示します。

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

Sub Exercise()
    Call CreateCustomer
End Sub

Call キーワードの有無にかかわらず、プロシージャを呼び出すときは、必要に応じて名前の右側に開き括弧と閉じ括弧を入力できます。次に例を示します。

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

Sub Exercise()
    CreateCustomer()
End Sub

手順とアクセスレベル

変数アクセスと同様に、プロシージャへのアクセスはアクセス レベルによって制御できます。プロシージャは、プライベートまたはパブリックにすることができます。プロシージャのアクセス レベルを指定するには、その前に Private または Public キーワードを付けます。次に例を示します。

Private Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

グローバル変数に適用されたルールは同じです。

プライベート: プロシージャをプライベートにすると、同じモジュールの他のプロシージャから呼び出すことができます。外部モジュールのプロシージャは、そのようなプロシージャにアクセスできません。

また、プロシージャがプライベートの場合、その名前は [マクロ] ダイアログ ボックスに表示されません。

パブリック: パブリックとして作成されたプロシージャは、同じモジュールのプロシージャおよび他のモジュールのプロシージャから呼び出すことができます。

また、プロシージャがパブリックとして作成された場合、[マクロ] ダイアログ ボックスにアクセスすると、その名前が表示され、そこから実行できます。

于 2016-05-14T04:22:14.857 に答える
3

pptCreator が同じファイル内の関数/プロシージャである場合、次のように呼び出すことができます

call pptCreator()

于 2009-07-02T02:29:05.633 に答える
1

モジュール内のプロシージャは、引数を渡すと便利で一般的になります。

例えば:

Public Function DoSomethingElse(strMessage As String)  
    MsgBox strMessage
End Function

strMessage という文字列変数で渡されたメッセージを表示できるようになりました。

于 2009-07-02T13:09:45.237 に答える
0

フォームの新しいボタンに関数を追加するには: (関数を呼び出すためにマクロを使用しないでください)

関数 (Function MyFunctionName()) を作成し、フォーム デザイン ビューを表示した後:

  1. 新しいボタンを追加します(古いボタンを再割り当てできるとは思いませんが、わかりません)。

  2. ボタン ウィザード ウィンドウが開いたら、[キャンセル] をクリックします。

  3. [ボタンのプロパティ] [イベント] タブ - [クリック時] フィールドに移動します。

  4. そのフィールドのドロップダウン メニューで、イベント プロシージャを選択します。

  5. ドロップダウン メニューの横にある ... が含まれているボタンをクリックすると、フォームの Visual Basic ウィンドウに新しいPrivate Sub が表示されます。

  6. そのプライベート サブ タイプで: Call MyFunctionName
    次のようになります。

    Private Sub Command23_Click()
    
        Call MyFunctionName
    
    End Sub
    
  7. あとは保存するだけです。

于 2013-10-05T15:37:05.323 に答える