2013-07-18 41 views
0

在C中,标记为extern的变量只需要在本地声明,但可以在外部定义。这可能与VBA?因此,我喜欢这样的事情:如何在VBA中声明一个`extern`变量?

DataSource_14.accdb: 
    ' References CommonFunctions.accdb 
    Public SOURCE_ID As Long = 14 

    Public Sub Baz() 
     Foo 
     Bar 
    End Sub 

CommonFunctions.accdb: 
    Extern SOURCE_ID As Long ' <- what's the proper way to declare this? 
    Public Sub Foo() 
     Debug.Print "Doing Foo stuff with source " & SOURCE_ID 
    End Sub 
    Public Sub Bar() 
     Debug.Print "Doing Bar stuff with source " & SOURCE_ID 
    End Sub 

回答

1

如果您转到VBA中的工具/参考,您可以添加对其他数据库的引用。然后你可以使用:

Application.Run "projectname.procedurename" 

(返回值是一个Variant

的“项目名称”默认为数据库名称,也可以在VB编辑器(工具,VBAProject属性)来改变。

但是,这不会检索公共变量。这个变量需要被一个Function过程返回。

或者,另一个数据库可以是一个库数据库(或加载项)。见herehere

我相信可以通过创建一个库数据库并使用此数据库中的类来公开类的字段(属性)来返回一个变量。但是创建一个Function过程要简单得多。

但是,如果可能的话,创建一个包含有用函数的模块并在数据库之间进行复制要容易得多。我相信创建和使用Access加载项(数据库)可能会有问题。