【问题标题】:Calling a Public Sub from a form in MS Access从 MS Access 中的表单调用公共子
【发布时间】:2009-08-20 15:01:04
【问题描述】:

非常简单的问题:我有一个公共子(在模块中),我想从表单上的按钮调用它。我想从模块中调用的函数的名称是 GenerateKML。

我读过这篇文章:

How do I call a VBA Function into a Sub Procedure

并尝试了所有建议的方法,但没有一个对我有用。我的代码可能有问题,但是当我在代码视图中(编辑模块)并按下“播放”按钮时,代码可以正常运行(创建了一个 KML 文件)。

如果我使用建议的第二种方法(从表单调用模块中的子例程),我会收到以下错误消息:

编译错误

预期的变量或过程,而不是模块

如果我使用第三种方法(从表单调用子例程而不使用事件过程),我会得到:

您作为事件属性输入的 On Click 表达式...:您输入的表达式具有 [my DB name] 找不到的函数名称。

所以我怀疑我调用要运行的代码的方式有问题。

我的模块的代码是这样开始的:

Option Compare Database
Public Sub GenerateKML()
'
' GenerateKML Macro
' Macro recorded 26/09/2006 by simon_a
' Adapted and imported to Access by SAA
' 03 aug 2007 - v3.0 - 2007 08 06 19 24
'

    ' DECLARE VARIABLES
    Dim filename As String
    Dim docname As String

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    也许您已将代码模块命名为与其中的过程相同。 (只是一个想法)

    即子 GenerateKML,位于您命名为 GenerateKML 的模块中。这会产生冲突并导致错误消息。

    【讨论】:

    • 非常感谢 Lil'Monkey - 成功了。
    【解决方案2】:

    如果您已将模块命名为 GenerateKML 以及您的子模块,则需要使用以下方法调用它:

    GenerateKML.GenerateKML arguments
    

    (或者只是重命名一个或另一个,这可能更容易)

    【讨论】:

      【解决方案3】:

      尝试使用 mod 前缀重命名您的模块:modGenerateKML。 您不会从表单中引用模块名称,只是您的公共子或函数的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        相关资源
        最近更新 更多