以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  VBA不同模块共享变量的疑问  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=52176)

--  作者:klc
--  发布时间:2013/5/18 11:06:07
--  VBA不同模块共享变量的疑问

在一般语言规则里面,变量需要在使用前先定义,现在在VBA的Function模块中第一行定义了一个数组变量:

dim dates()

因为定义是在模块最开头的位置,因此模块中的所有函数都可以使用。

现在我又在Macro模块中定义了一些宏,也需要使用上面那个变量,需不需要做什么引入?

我试过似乎是不需要,但是就有点疑问,VBA中不同模块之间有没有先后关系的?变量定义在哪个位置,是相当于所有模块都能用的?


--  作者:王锋
--  发布时间:2013/5/18 11:15:00
--  
是的,目前是这样的,因此定义在模块外面的全局变量,一定要慎重
--  作者:guotx2010
--  发布时间:2013/5/20 9:02:41
--  
使用任何一个模块开头以public定义的变量,在每一个模块都可以用,没有先后关系,如果是模块开头以private或dim定义的变量只在本模块可见,其他模块不可见的。
--  作者:Marcus
--  发布时间:2013/5/22 18:04:24
--  
以下是引用guotx2010在2013-5-20 9:02:41的发言:
使用任何一个模块开头以public定义的变量,在每一个模块都可以用,没有先后关系,如果是模块开头以private或dim定义的变量只在本模块可见,其他模块不可见的。

我现在遇到这个问题,两个模块开头都定义了Private sCode1, sCode2,然后V2.972版就发现变量重复定义了。
--  作者:王锋
--  发布时间:2013/5/22 18:10:56
--  
复杂工程建议你用类模块,不同的功能部分用类来物理隔开
--  作者:Marcus
--  发布时间:2013/5/22 18:20:59
--  
以下是引用王锋在2013-5-22 18:10:56的发言:
复杂工程建议你用类模块,不同的功能部分用类来物理隔开

正在做。VBA的类模块有资料么?网上有针对性的也很少。
我的需求是同一个函数应用到不同品种上,这样可以增加代码复用的效率。变量要复制多次给不同品种使用,虽然在外面看它们的命名是一样的。
--  作者:admin
--  发布时间:2013/5/22 19:04:03
--  
你去随便买本VBA的开发书籍,里面都会有涉及类模块的概念的
--  作者:Marcus
--  发布时间:2013/5/23 10:17:27
--  
以下是引用admin在2013-5-22 19:04:03的发言:
你去随便买本VBA的开发书籍,里面都会有涉及类模块的概念的

金字塔的类模块是标准类模块么?网上一搜好多都是EXCEL VBA,有些代码不能直接用到金字塔上。万事开头难,"让你搞不定"的程序员的确不招人待见。
--  作者:王锋
--  发布时间:2013/5/23 16:51:27
--  
基本是一样的,如果你不放心,可以网上专门搜索VBS的类模块的编程资料
--  作者:klc
--  发布时间:2013/5/28 18:36:45
--  

我就是不想分开,呵呵,我是想共享,但感觉应该给个“明示”会觉得安心点,比如VC++中好像用extern来引入另外一个模块文件中定义的变量