从MS Access中的表单调用Public Sub

时间:2009-08-20 15:01:04

标签: ms-access

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

我读过这篇文章:

How do I call a VBA Function into a Sub Procedure

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

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

  

编译错误

     

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

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

  

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

所以我怀疑我如何调用我想要运行的代码有问题。

这是我模块的代码启动方式:

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

3 个答案:

答案 0 :(得分:5)

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

即。子GenerateKML位于一个名为GenerateKML的模块中。这造成了冲突和冲突。产生错误信息。

答案 1 :(得分:3)

如果您已将模块GenerateKML命名为sub,则需要使用以下命令调用它:

GenerateKML.GenerateKML arguments

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

答案 2 :(得分:2)

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