非常简单的问题:我想从表单上的按钮调用一个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
答案 0 :(得分:5)
也许您已将代码模块命名为与其中的过程相同。 (只是一个想法)
即。子GenerateKML位于一个名为GenerateKML的模块中。这造成了冲突和冲突。产生错误信息。
答案 1 :(得分:3)
如果您已将模块GenerateKML命名为sub,则需要使用以下命令调用它:
GenerateKML.GenerateKML arguments
(或者只是重命名一个,这可能更容易)
答案 2 :(得分:2)
尝试使用mod前缀重命名模块:modGenerateKML。 您不从表单引用模块名称,只引用公共子或函数的名称。