bluemoon 发表于 2003-11-17 09:51:00

一个奇怪且郁闷的问题!!

我在做VBA程序时 原来好好的程序 过了几天再运行 发现一个奇怪的问题 原先没有定义的变量居然要定义 提示为:“编译错误:缺少函数或变量”例如原先有个变量i 做 for i = 0 to 10; i原先不需要定义 可现在要了这是怎么回事呢?

efan2000 发表于 2003-11-17 11:58:00

如果在程序中包含有:Option Explicit,表示强制显式声明模块中的所有变量。
在工具-选项中的“要求变量声明”之前打勾,以后就会自动加上这一句。

Option Explicit 语句
      

在模块级别中使用,强制显式声明模块中的所有变量。

语法

Option Explicit

说明

如果使用,Option Explicit 语句必须写在模块的所有过程之前。

如果模块中使用了 Option Explicit,则必须使用 Dim、Private、Public、ReDim 或 Static 语句来显式声明所有的变量。如果使用了未声明的变量名在编译时间会出现错误。

如果没有使用 Option Explicit 语句,除非使用 Deftype 语句指定了缺省类型,否则所有未声明的变量都是 Variant 类型的。

注意 使用 Option Explicit 可以避免在键入已有变量时出错,在变量的范围不是很清楚的代码中使用该语句可以避免混乱。

bluemoon 发表于 2003-11-17 12:53:00

但是我没有用Option Explicit 啊 在工具-选项中的“要求变量声明”之前也没有打勾啊
关键是原来好好的 现在不能用了啊

topirol 发表于 2003-11-17 12:59:00

呵呵,我也遇过这种情况,不知道是什么回事

efan2000 发表于 2003-11-17 13:11:00

还有一种情况,可能是与VBA的版本有关吧。
以前碰到类似的,CAD安装的是AutoCAD R2000,它的VBA是5.0版本的。而Office安装的是Office 2000,它的VBA是6.0版本的。
可能是这两套软件的VBA版本不一样,经常会出现一些内部函数没有定义的问题。可能是微软对于版本的控制不是太好。

bluemoon 发表于 2003-11-17 20:22:00

哦 原来如此啊
是不是2002和2004 就没有这种问题了啊

efan2000 发表于 2003-11-17 21:39:00

R2002和R2004的VBA版本都是6.0的,没有区别。

myfreemind 发表于 2003-11-18 00:04:00

不过程序中的变量最好声明一下比较好,要不然程序一大哪里错了都不知道!
页: [1]
查看完整版本: 一个奇怪且郁闷的问题!!