私はこれがそこにいる誰かにとって簡単な質問であることを知っていますが、私は彼らが何であるかを理解していなかったので、実際に機能モジュールをまったく使用したことがありません。
そのため、これを使用できる(冗長性を削減する)ことができますが、フォームからサブ(ボタンクリックなど)プロシージャを呼び出す方法を知りたいです。
私はこれを試しました...
Sub Command_Click()
Call "pptCreator"
End Sub
それがかなり悪いことは知っていますが、これを手順に入れる方法がわかりません。
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)
pptCreatorが同じファイル内の関数/手順である場合、次のように呼び出すことができます
call pptCreator()
サブプロシージャの呼び出し– 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
グローバル変数に適用されたルールは同じです:
プライベート:プロシージャをプライベートにすると、同じモジュールの他のプロシージャから呼び出すことができます。外部モジュールのプロシージャは、そのようなプロシージャにアクセスできません。
また、プロシージャがプライベートの場合、その名前は[マクロ]ダイアログボックスに表示されません。
パブリック:パブリックとして作成されたプロシージャは、同じモジュールのプロシージャおよび他のモジュールのプロシージャから呼び出すことができます。
また、プロシージャがパブリックとして作成された場合、[マクロ]ダイアログボックスにアクセスすると、その名前が表示され、そこから実行できます。
引数を渡すと、モジュール内のプロシージャが有用で汎用的になります。
例えば:
Public Function DoSomethingElse(strMessage As String)
MsgBox strMessage
End Function
StrMessageという文字列変数で渡されるメッセージを表示できるようになりました。
関数をフォームの新しいボタンに追加するには:(関数を呼び出すためにマクロを使用しないでください)
関数(関数MyFunctionName())を作成し、フォームデザインビューになったら:
Private Sub Command23_Click()
MyFunctionNameを呼び出す
サブ終了