如何调用VBA函数到Sub过程(How do I call a VBA Function into

2019-06-24 17:17发布

我知道这是有人一个简单的问题在那里,但我从来没有真正使用的功能模块,因为在所有我不明白是什么。

所以,我有一大堆的事情,我可以用这个(削减冗余),但我想知道我怎么叫成子(如按钮单击)的过程从一个形式。

我想这...

Sub Command_Click()
    Call "pptCreator"
End Sub

我知道这是很糟糕,但我不知道如何把这个变成一个过程。

Answer 1:

这里有一些不同的方式,你可以调用的东西在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)

其中结果是由函数返回类型的变量。

注意:您并不总是需要Call关键字。 在大多数情况下,你可以这样调用子:

MySub(MyParameter)


Answer 2:

如果pptCreator是在同一文件中的函数/过程,你可以如下调用它

call pptCreator()



Answer 3:

调用一个子步骤 - 3路技术

一旦你有一个过程,不管你创造了它,或者它是Visual Basic语言的一部分,你可以使用它。 使用过程也被称为调用它。

调用程序之前,你应该先找到您要在其中使用它的代码段。 要调用一个简单的程序,输入其名称。 下面是一个例子:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"

msgbox strFullName
End Sub

Sub Exercise()
    CreateCustomer
End Sub

除了使用一个程序的名字来称呼它,你也可以使用关键字调用它的前面。 下面是一个例子:

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 Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

已应用于全局变量的规则是相同的:

私人:如果过程是由私人,它可以由同一模块的其他程序调用。 外部模块的程序不能访问这样的程序。

此外,当一个程序是私有的,它的名字没有出现在宏对话框

市民:公共创建的过程可以由同一模块的程序和其他模块的程序被调用。

此外,如果一个过程,作为公共创建的,当你访问宏对话框,其名称显示,你可以从那里运行



Answer 4:

在一个模块过程开始时,加上参数是有用的和通用的。

例如:

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

现在可以显示与名为strMessage字符串变量传递任何消息。



Answer 5:

为了将一个函数添加一个新的窗体的按钮上:(和避免使用宏来调用函数)

您创建功能(功能MyFunctionName())后,你在表单设计视图:

  1. 添加一个新的按钮(我不认为你可以重新分配旧纽扣 - 不知道虽然)。
  2. 当按钮向导窗口中打开点击取消。
  3. 转到按钮属性事件选项卡 - 在点击 - 场。
  4. 在该领域的下拉菜单中选择:事件过程。
  5. 现在按钮点击旁边的下拉有......在它的菜单,你将采取的形式Visual Basic中窗口一个新的私人小组。
  6. 在这种私人小组类型:呼叫MyFunctionName
    它应该是这个样子:

私人小组Command23_Click()

呼叫MyFunctionName

结束小组

  1. 然后,只需将它保存。


文章来源: How do I call a VBA Function into a Sub Procedure