我有一个在混合的2003,2007环境中使用的数据库。我有一些使用2007年新TempVars功能的小功能。如果它是2003用户,那么他们没有这些功能就没有问题。
如何编写代码以便在Access 2003上编译和运行。我尝试过on error resume next
但这对编译时错误不起作用。
答案 0 :(得分:1)
如果您的应用程序将与Access 2003一起使用,在我看来您应该排除2003不支持的功能。
但是,如果您必须拥有Tempvars,请查看条件编译器常量方法是否适合您。
Option Compare Database
Option Explicit
#Const Aversion = "2007" 'conditional compiler constant '
Public Sub HelloWorld()
Dim strWho As String
strWho = "World"
#If Aversion = "2007" Then
'* your 2007 feature code here *'
strWho = UCase(strWho)
#End If
'Aversion 2003 -> Hello World '
'Aversion 2007 -> Hello WORLD '
Debug.Print "Hello " & strWho
End Sub
检查访问'帮助,了解有关 #Const 和 #If 的更多信息。
我没有对此进行测试,但我认为它可行。您可能需要两个数据库副本:YourDb2003.mdb;和YourDb2007.mdb。在YourDb2003.mdb中,使用“2003”作为编译器常量,使用YourDb2007.mdb中的“2007”。
答案 1 :(得分:0)
这是关于使用VBA内置编译器常量的nice summary
#If VBA7 Then
可以帮助您区分仅限Office 2010的代码。不幸的是,它不适用于Office 2007。