3 回答
TA贡献1951条经验 获得超3个赞
您需要Option Explicit
在每个VBA代码模块(包括表单和报告)的顶部使用。
您可以进入VBA编辑器>>工具>>选项>>编辑器选项卡,并确保选中了“需要变量声明”,以为表单和报表后面的所有将来创建的模块和VBA代码设置此设置。
从Access 2003帮助:
要求变量声明-确定模块中是否需要显式变量声明。选择此选项会将
Option Explicit
语句添加到任何新模块的常规声明中。
变量变暗时,我也会使用驼峰式大小写。 ThisIsAnExampleOfCamelCase
。如果Access不会将小写变量更改为驼峰大小写,一旦退出VBA代码行,我就会知道输入错误。
TA贡献1824条经验 获得超5个赞
有关OPTION EXPLICIT和Access VBA的一些历史记录
根据Tony的回答,这里有一些解释,说明为什么在某些Access代码模块中未存在OPTION EXPLICIT的问题。
在Access 95和Access 97(带有VBA的前两个Office版本)中,Access的代码编辑器与其他Office程序不同。在Access 2000中,Microsoft通过Access中的其他Office应用程序实现了VBE。同时,MS选择使Access VBA模块的行为像其他应用程序中的模块一样,默认情况下不具有OPTION EXPLICIT。
因此,在Access 2000中,默认情况下,模块创建时没有OPTION EXPLICIT。
当然,这对MS而言确实是一个愚蠢的设计决定,后来他们撤消了这一决定(我不记得是Access 2002或2003纠正了问题,并在所有新模块中再次默认为OPTION EXPLICIT)。它之所以愚蠢(因为MS应该知道这一点)是因为Access是一种数据库应用程序开发工具,因此可以对强类型的数据进行操作。因此,默认情况下应严格键入代码环境,以使其与正在使用的数据保持一致。
在Excel或Word中,数据不是强类型,因此对几乎所有内容使用变体数据类型更有意义,只是使每个人都更容易使用。通过不使用OPTION EXPLICIT来实现这一点的缺点是,您可能会得到拼写错误,这些错别字会自动引入新变量(例如变量“ intrdoduce”),如果我使用OPTION EXPLICIT撰写本文,那么如果没有OPTION EXPLICIT,就不会发生产生运行时错误!:)]。这是所有以这种方式工作的语言的问题(我努力工作于PHP,其中变量名可以按大小写区分,即$ Var与$ var是不同的变量;但是我离题了),但是MS决定在Word和Excel中以这种方式实现它,因为这样的理论是,编写代码的人如果不这样做的话,将会更轻松。
因此,MS犯了一个错误,即使Access的VBE版本像其他应用程序一样,即使Access自己的目的内部没有逻辑支持这一举动。然后,MS撤消该更改并返回到以前的状态(即,默认情况下,所有模块中的OPTION EXPLICIT)。
因此,您经常会看到在Access 2000中开始使用的应用程序,这些应用程序到处都是模块,而没有OPTION EXPLICIT。当我必须使用这样的应用程序时,我的首要任务是在所有模块中实现OPTION EXPLICIT,然后修复该死的东西,使其能够编译(鉴于该东西是在没有它的情况下进行编程的,因此通常很难)。
TA贡献2080条经验 获得超4个赞
这个问题对于Excel很有帮助,您可能会看到它是否适用于Access:
丢失的变量
本质上,MZ-Tools将搜索您的代码并告诉您未使用的内容。VBA的版本可以在这里找到。使用查看源代码功能。
- 3 回答
- 0 关注
- 643 浏览
添加回答
举报