欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → VBA不同模块共享变量的疑问

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5563人关注过本帖树形打印复制链接

主题:VBA不同模块共享变量的疑问

帅哥哟,离线,有人找我吗?
klc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
VBA不同模块共享变量的疑问  发帖心情 Post By:2013/5/18 11:06:07 [只看该作者]

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

dim dates()

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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/5/18 11:15:00 [只看该作者]

是的,目前是这样的,因此定义在模块外面的全局变量,一定要慎重


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/5/20 9:02:41 [只看该作者]

使用任何一个模块开头以public定义的变量,在每一个模块都可以用,没有先后关系,如果是模块开头以private或dim定义的变量只在本模块可见,其他模块不可见的。

 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2013/5/22 18:04:24 [只看该作者]

以下是引用guotx2010在2013-5-20 9:02:41的发言:
使用任何一个模块开头以public定义的变量,在每一个模块都可以用,没有先后关系,如果是模块开头以private或dim定义的变量只在本模块可见,其他模块不可见的。

我现在遇到这个问题,两个模块开头都定义了Private sCode1, sCode2,然后V2.972版就发现变量重复定义了。

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/5/22 18:10:56 [只看该作者]

复杂工程建议你用类模块,不同的功能部分用类来物理隔开


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2013/5/22 18:20:59 [只看该作者]

以下是引用王锋在2013-5-22 18:10:56的发言:
复杂工程建议你用类模块,不同的功能部分用类来物理隔开

正在做。VBA的类模块有资料么?网上有针对性的也很少。
我的需求是同一个函数应用到不同品种上,这样可以增加代码复用的效率。变量要复制多次给不同品种使用,虽然在外面看它们的命名是一样的。

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2013/5/22 19:04:03 [只看该作者]

你去随便买本VBA的开发书籍,里面都会有涉及类模块的概念的

 回到顶部
帅哥哟,离线,有人找我吗?
Marcus
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2013/5/23 10:17:27 [只看该作者]

以下是引用admin在2013-5-22 19:04:03的发言:
你去随便买本VBA的开发书籍,里面都会有涉及类模块的概念的

金字塔的类模块是标准类模块么?网上一搜好多都是EXCEL VBA,有些代码不能直接用到金字塔上。万事开头难,"让你搞不定"的程序员的确不招人待见。

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/5/23 16:51:27 [只看该作者]

基本是一样的,如果你不放心,可以网上专门搜索VBS的类模块的编程资料


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
klc
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/28 18:36:45 [只看该作者]

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


 回到顶部