ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 面向VBA初学者→ VBA代码中有关【变量】的误区

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-30 09:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
对于初学者我认为是对的,不声明变量可以省去很多,也不懂只是照着葫芦画瓢,但是其他反对这个观点的人说的也有道理,所以结论是根据个人的爱好,各取所需,学习不能一概而论,这种方法对某个人适合,但绝对不是对每个人都适合,找到适合自己的方法就是最好的方法。

点评

又是一个“一言以蔽之”!  发表于 2014-9-17 22:03

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 09:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
呵呵,这么说起来,即使每个变量都做了dim 声明
但是变量名称的定义习惯、同一变量名称是专用或者 同一变量名会被在不同过程中多次重复使用等……

即使是高级水平的人,每个人实际对于变量的使用习惯都有很大、很大的差异啊。

…………

同一变量名在不同过程中多次重复使用的例子:
For i = 1 to 100
……Process A
Next
For i = 1 to 200
……Process B
Next

即,两个循环过程都使用了i作为循环变量。

严谨一点的会是:
For i = 1 to 100
……Process A
Next
For j= 1 to 200
……Process B
Next
即,两个循环过程分别使用了不同的i和j作为循环变量。


上述例子中,还有一个微小差异:
Next 后面,是否写出循环变量名i或j
→ 实际上 Next 后面的循环变量时可以省略的,但写上去也是一种“好”习惯吧。


呵呵。





TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:07 | 显示全部楼层
而按照lee1892的习惯,可能会是:

For i_ProcessA = 1 to 100
……Process A
Next i_ProcessA
For i_ProcessB = 1 to 200
……Process B
Next i_ProcessB

即,变量名称要能反映尽可能多的信息……(那么注释就可以省略了吧?)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
哦。我忽然想起来一句话:

“好”习惯<>好能力


但因为一般说起来,有“好”习惯的人更容易成功?!
所以大家还是坚信必须有“好”习惯。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-1-30 10:18 | 显示全部楼层
一开始讨论的是:是否需要定义变量。你现在转而去说定义变量的细节,转的也太快了吧,是否定义变量与如何定义变量是两个话题,如何定义变量问题是个人问题,已经脱离此次讨论的主题,对楼主的逻辑能力只能是越来越佩服。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:30 | 显示全部楼层
本帖最后由 香川群子 于 2013-1-30 10:34 编辑
chentx 发表于 2013-1-30 09:51
a、b、c单字母变量是一个很好的习惯!?请不要一再的去误导初学者的行为,一个有一定经验的开发者看到这样 ...


你又一次省略了我的前提。

【简单代码时】,使用单字母变量是一个好习惯。

比如,只使用一个字典时:
Set d = CreateObject("Scripting.Dictionary")

就这样一个字母d是完全正确的用法。

…………
但是你说的应用条件改变以后,讨论就没有意义了。



TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:37 | 显示全部楼层
chentx 发表于 2013-1-30 09:42
“即使使用了dim 语句,也不能保证运行结果正确。”

你把定义变量这个行为关联到运行结果的正确性与否 ...

请看我回帖所回复的原始帖里说了些什么。

看完你就会明白,这个并非神一样的逻辑,而是跟题非常明确的说法。


至于你,我倒要怀疑你的阅读能力。尤其是对网络帖子的阅读理解能力了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 香川群子 于 2013-1-30 10:43 编辑
chentx 发表于 2013-1-30 09:46
道不辩不明,理不说不清,我们坚持任何人都有说话的权利,只有在互相探讨中才会对事物、道理有更清晰的还 ...


我的主题是:

VBA初学者,请有勇气地对定义变量说“不”

不要接受老师的误导:
【因为定义变量是个“好”习惯,所以你必须认真学习,并从现在开始每一次编写代码时都这么去做!】

如果老师有这个要求的话,我完全认为这种要求是错误的。

我认为老师应该这么说:

定义变量在编写程序代码时有很多好处,
但是初学者则大可不必担心,可以先不用去定义变量,直接把代码写起来,用起来再说。


对我的这个提倡有问题的话,你就来批判吧。
其它的问题就没有必要讨论了。
(比如定义变量的诸多好处)

点评

思维要发散,还要能回归!  发表于 2014-9-17 22:07

TA的精华主题

TA的得分主题

发表于 2013-1-30 10:44 | 显示全部楼层
正准备学习,谢谢楼主指教

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:47 | 显示全部楼层
wuzaijin2012 发表于 2013-1-30 09:25
不能苟同,既然学习VBA,就要学扎实,定义变量应该是基础.基础不牢固,怎能起高楼?

再次强调:

定义变量并非必须,实际上对于真正理解编写代码规则的人来说,
也可以一直对大部分变量省略定义过程,而照样顺利地写出好的、复杂的代码。

【基础不牢固,怎能起高楼】这个比喻,
并不能得出:【不进行变量定义,怎能写代码】这样的结论。

反之,实际情况是:不进行变量定义,照样写代码、用代码。



您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 06:12 , Processed in 0.033716 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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