ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 664094991

[求助] 公共变量如何定义? 数组如何调用?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-13 22:28 | 显示全部楼层
micch 发表于 2019-6-13 22:25
我也是初学,刚测试了一下,定义公共变量,数组可以直接定义固定大小,然后一个过程给数组循环赋值,另一 ...

这只是个例子,我写别的代码的时候需要这样用,示例中我只是简化了代码 仅仅放出问题而已

TA的精华主题

TA的得分主题

发表于 2019-6-13 22:32 | 显示全部楼层
在 主sub 中,  call  子sub:数组初始化。这个只是在用到arr的时候 才加载内存, 比较好。

TA的精华主题

TA的得分主题

发表于 2019-6-13 22:32 | 显示全部楼层
664094991 发表于 2019-6-13 22:28
这只是个例子,我写别的代码的时候需要这样用,示例中我只是简化了代码 仅仅放出问题而已
  1. Dim arr(), a%
  2. Sub test1()
  3.     a = 99
  4.     ReDim Preserve arr(1 To a)
  5.     arr(5) = 100
  6. End Sub
  7. Sub test2()
  8.     x = a
  9.     x = arr(5)
  10. End Sub
复制代码

执行代码时,x=a 结果是99
x=arr(5)结果是100
不需要a赋值两次,也不需要call test1()

TA的精华主题

TA的得分主题

发表于 2019-6-13 22:36 | 显示全部楼层
micch 发表于 2019-6-13 22:32
执行代码时,x=a 结果是99
x=arr(5)结果是100
不需要a赋值两次,也不需要call test1()

开始 不运行test1 ,你直接 运行test2 ,试试看 。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-13 22:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zopey 发表于 2019-6-13 22:36
开始 不运行test1 ,你直接 运行test2 ,试试看 。

所以到底怎么解决啊?大哥
感谢热心回复。。

TA的精华主题

TA的得分主题

发表于 2019-6-13 22:44 | 显示全部楼层
zopey 发表于 2019-6-13 22:36
开始 不运行test1 ,你直接 运行test2 ,试试看 。

呃,直接运行test2,结果都是空值,很正常啊,定义了变量不赋值,当然变量是空值啊,公共变量也得赋值啊;

如果在test2给公共变量赋值,那在test1里直接引用变量,值就是test2赋值的值。

无论哪个过程引用公共变量,都是变量当前的值吧?

TA的精华主题

TA的得分主题

发表于 2019-6-13 23:01 | 显示全部楼层
664094991 发表于 2019-6-13 22:40
所以到底怎么解决啊?大哥
感谢热心回复。。
  1. Public arr, a

  2. Sub cs1()
  3.     a = [a1].End(4).Row
  4.     arr = [a1].Resize(a, 1)
  5. End Sub

  6. Sub cs2()
  7.     Dim ss()
  8.     Call cs1
  9.    
  10.     ReDim ss(1 To a)
  11.     For i = 1 To UBound(arr)
  12.         ss(i) = arr(i, 1) * 2
  13.     Next
  14. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2019-6-13 23:32 | 显示全部楼层
如果要作为全局公共变量,就要把这个变量放在模块中。

TA的精华主题

TA的得分主题

发表于 2019-6-14 05:38 | 显示全部楼层
到底想达到啥目的?把诉求说明白,大家才能帮你!你是对引用二维数组的值的方法不明白,还是对引用公共变量不明白?

TA的精华主题

TA的得分主题

发表于 2019-6-14 07:40 来自手机 | 显示全部楼层
664094991 发表于 2019-6-13 22:05
感谢热心回复,但是好像还是不行,变量a重复定义赋值的问题不是你说的这种解决方法,另外数组还是会提示 ...

你什么都不懂,多学少说。变量a根本不需要重复定义,两个过程的值都是最后一行。最重要的,你问的问题是什么玩意啊,你自己看得懂你在问什么吗?我只能猜你你到底想问什么。但你的方法是错误的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 23:07 , Processed in 0.046013 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表