以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- VBA不同模块共享变量的疑问 (http://weistock.com/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的发言: 我现在遇到这个问题,两个模块开头都定义了Private sCode1, sCode2,然后V2.972版就发现变量重复定义了。
使用任何一个模块开头以public定义的变量,在每一个模块都可以用,没有先后关系,如果是模块开头以private或dim定义的变量只在本模块可见,其他模块不可见的。 |
-- 作者:王锋 -- 发布时间: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的发言: 金字塔的类模块是标准类模块么?网上一搜好多都是EXCEL VBA,有些代码不能直接用到金字塔上。万事开头难,"让你搞不定"的程序员的确不招人待见。
你去随便买本VBA的开发书籍,里面都会有涉及类模块的概念的 |
-- 作者:王锋 -- 发布时间:2013/5/23 16:51:27 -- 基本是一样的,如果你不放心,可以网上专门搜索VBS的类模块的编程资料 |
-- 作者:klc -- 发布时间:2013/5/28 18:36:45 -- 我就是不想分开,呵呵,我是想共享,但感觉应该给个“明示”会觉得安心点,比如VC++中好像用extern来引入另外一个模块文件中定义的变量 |