如何将VBA函数调用到子过程中

Jus*_*tin 15 ms-access vba office-2003 function access-vba

我知道对于那里的人来说这是一个简单的问题,但我从来没有真正使用过功能模块,因为我不明白它们是什么.

所以我有很多东西可以使用它(减少冗余),但我想知道如何从表单调用sub(如按钮单击)过程.

我试过这个......

Sub Command_Click()
    Call "pptCreator"
End Sub
Run Code Online (Sandbox Code Playgroud)

我知道这很糟糕,但我不知道如何将其纳入程序.

Rob*_*vey 32

以下是您可以在Microsoft Access中调用内容的一些不同方法:

从模块调用表单子或函数

您调用的表单中的子项必须是公共的,如:

Public Sub DoSomething()
  MsgBox "Foo"
End Sub
Run Code Online (Sandbox Code Playgroud)

像这样调用sub:

Call Forms("form1").DoSomething
Run Code Online (Sandbox Code Playgroud)

在拨打电话之前,表格必须打开.

要调用事件过程,您应该在表单中调用公共过程,并在此公共过程中调用事件过程.

从表单调用模块中的子例程

Public Sub DoSomethingElse()
  MsgBox "Bar"
End Sub
Run Code Online (Sandbox Code Playgroud)

...只需直接从您的活动程序中调用它:

Call DoSomethingElse
Run Code Online (Sandbox Code Playgroud)

在不使用事件过程的情况下从表单调用子例程

如果需要,您实际上可以将函数绑定到表单控件的事件,而无需在控件下创建事件过程.要做到这一点,首先需要在模块中使用公共函数而不是sub,如下所示:

Public Function DoSomethingElse()
  MsgBox "Bar"
End Function
Run Code Online (Sandbox Code Playgroud)

然后,如果表单上有一个按钮,而不是将[事件过程]放在属性窗口的OnClick事件中,请将其放入:

=DoSomethingElse()
Run Code Online (Sandbox Code Playgroud)

单击该按钮时,它将调用模块中的公共函数.

调用函数而不是过程

如果调用sub看起来像这样:

Call MySub(MyParameter)
Run Code Online (Sandbox Code Playgroud)

然后调用函数看起来像这样:

Result=MyFunction(MyFarameter)
Run Code Online (Sandbox Code Playgroud)

其中Result是函数返回的类型变量.

注意: 您并不总是需要Call关键字.大多数情况下,您可以像这样调用sub:

MySub(MyParameter)
Run Code Online (Sandbox Code Playgroud)