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

然后,如果您在表单上有一个按钮,而不是将 [Event Procedure] 放在属性窗口的 OnClick 事件中,请输入以下内容:

=DoSomethingElse()

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

调用函数而不是过程

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

Call MySub(MyParameter)

然后调用一个函数如下所示:

Result=MyFunction(MyFarameter)

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

注意: 您并不总是需要 Call 关键字。大多数时候,你可以像这样调用 sub:

MySub(MyParameter)
于 2009-07-02T02:48:09.743 回答
3

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

call pptCreator()

于 2009-07-02T02:29:05.633 回答
3

调用子程序 - 3 Way 技术

一旦你有了一个过程,无论是你创建的还是它是 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

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

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

此外,当一个过程是私有的时,它的名称不会出现在“宏”对话框中

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

此外,如果一个过程被创建为公共的,当您访问“宏”对话框时,它的名称会出现,您可以从那里运行它

于 2016-05-14T04:22:14.857 回答
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. 在那个 Private Sub 类型中: Call MyFunctionName
    它应该看起来像这样:

    Private Sub Command23_Click()
    
        Call MyFunctionName
    
    End Sub
    
  7. 然后保存它。

于 2013-10-05T15:37:05.323 回答