ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 10:51 | 显示全部楼层
zhw79 发表于 2013-1-30 09:39
有个前提:初学者!写的代码行数不多,几行,10几行,以快速完成简单的任务为宗旨!太多的DIM会让初学者产生 ...

你说的前半段正是我要宣传的内容。

你说的后半段基本上已经脱离了初学者的条件。但和我要提倡的并无矛盾。

谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 11:02 | 显示全部楼层
chentx 发表于 2013-1-30 10:18
一开始讨论的是:是否需要定义变量。你现在转而去说定义变量的细节,转的也太快了吧,是否定义变量与如何定 ...

我说的不需要定义变量有两种情况:

1. 对于初学者来说,可以不用定义变量就开始学习写代码,代码照样会运行。


2. 即使对于复杂程序来说,也同样是大多数变量都可以不定义就能安全使用的。
  但这里就是个人习惯问题了。

既然是个人习惯,那就无所谓了。你按照你的习惯做好了。


…………
至于后面开始说定义变量的细节,也是对于后面跟帖的衍生感想。


总之,一个有趣的事实是:
即使完全认可定义变量是一个好习惯的人,其实他们的做法也都不一定合乎【严格的规范】。


但是这个似乎还没有强制性的标准。


所以,我产生一种感觉。
有些赞同定义变量“好习惯”的人,或者他在使用变量时的“习惯”也并不好。




点评

“有些赞同定义变量“好习惯”的人,或者他在使用变量时的“习惯”也并不好。” 精辟!!!!!!!!!  发表于 2014-9-17 22:10

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-1-30 11:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2013-1-30 10:47
再次强调:

定义变量并非必须,实际上对于真正理解编写代码规则的人来说,

拜读过很多群子姐姐的大作,受益匪浅。可是今天的作品,我不支持群子姐姐的观点。
如果一个人初学时就没有养成定义变量的习惯,将来是不会随着他水平的增长而去更改,反而会因为熟练变本加厉的继续应用下去。
他写的程序,就会造成其他人无法阅读。对于初学者来说强制定义dim 确实意义不大,但是你写出来的程序可能其他人要用要修改补充,没有定义变量,甚至没有养成良好的变量命名习惯。程序过程中突然蹦出来个r,蹦出来个t, 天知道是什么东西。个人就有过类似经历,别人拿来程序让俺改,看的头大,俺是一遍看一遍大Fk作者不止。这种代码,恨不得过段时间编写者自己都忘记哪个是哪个,他人更完全无法去维护扩充,
所以在VB 6.0 风行世界的年代,有个大师说过VB 代码是最无法理解与维护的代码超过现在令人谈虎色变的西假假,恐怕就是指VB 程序里的弱有效部分吧。所以微软在VB.net 语法里就要求必须变量在使用前必须声明。

点评

全都是“人精”!!!!  发表于 2014-9-17 22:11
“群子”肯定对,但是“姐姐”未必是吧?  发表于 2013-1-30 14:15

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 11:13 | 显示全部楼层
hehex 发表于 2013-1-30 11:06
拜读过很多群子姐姐的大作,受益匪浅。可是今天的作品,我不支持群子姐姐的观点。
如果一个人初学时就没 ...

回归到原点。

VBA尤其是一般Excel使用者的VBA宏,
本质上说就不算是一个程序,而仅仅是一个简单重复过程的自动化。

然后,在此基础上,使用变量以便增加一些智能化,这个就基本上是VBA应用的目的了。


总之,我的目的不是面向编程爱好者。

仅仅是面对VBA初学者。甚至今后他都不需要很高的编程水平,只要能应付工作就足够了。

TA的精华主题

TA的得分主题

发表于 2013-1-30 11:16 | 显示全部楼层
各自观点不同,讨论非常热烈,从中学到不少的东西,呵呵。

TA的精华主题

TA的得分主题

发表于 2013-1-30 11:20 | 显示全部楼层
我是新手,所以每次都定义了,经常出现类型不配或者啥的....

TA的精华主题

TA的得分主题

发表于 2013-1-30 11:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
偶来膜拜一下香川老师的大作!{:soso__7748875033075509580_2:}

TA的精华主题

TA的得分主题

发表于 2013-1-30 12:44 | 显示全部楼层
本帖最后由 liucqa 于 2013-1-30 13:41 编辑

我觉得讨论变量定义是一件严肃的事情,如果认为"VBA简单代码时,使用a、b、c、d单字母变量是一个很好的习惯。"
那就说明您对变量的理解有点儿戏了。

目前通用的命名规则有三种

匈牙利命名法 Hungarian Notation (常用于早期的vb语言,由《
Programming Windows》一书推广开来)
参见zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95

Pascal命名法 Pascal casing    (用于函数名)
驼峰命名法   camel casing     (用于个人变量名)

我们在VBA编程中,大量使用的是匈牙利命名法,这种方法已经被淘汰,但是在VBA中给初学者使用还是很有意义的。

我觉得群子讨论变量定义的问题,确实是一件很有意义的事情。不过,在讨论这个话题之前,可以先看看国内外对变量命名的论述,这可是一个相当深奥的课题。

从我教学生学习vba的经验来看,如果一开始就让学生养成使用标准规范化的编码习惯的话,对vba的长期学习有着不可忽视的作用。相反,如果开始习惯没打好,到初级以后编程会面临极大的困扰(别是你希望你写的程序别人愿意看也能看懂)。我是过来人,对这一点深有体会。

当然,对那些一年到头写代码不会超过50行的非入门童鞋来说,用不用编码规范都是无所谓的事情了...

所以,群子的问题在于:用儿戏的言论给一个深奥的课题匆匆下了结论,这会误导小朋友滴{:soso_e100:}



点评

真是谆谆教诲啊!  发表于 2014-9-17 22:15

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-1-30 13:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liucqa 发表于 2013-1-30 12:44
我觉得讨论变量定义是一件严肃的事情,如果认为"VBA简单代码时,使用a、b、c、d单字母变量是一个很好的习惯 ...

Wiki 了一下
Pascal Case 是 Camel Case 的一种
貌似我现在的习惯是当年用Fortran留下来的

TA的精华主题

TA的得分主题

发表于 2013-1-30 13:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一个对编程感兴趣的人都会去学习编程语言的一些基础知识:语法、变量类型,这是很必然的。对于这类型的人,不用说他们自己也会找相关基础书籍来钻研,虽然在学习的开头,会遇到这样那样的问题,导致进度比较慢,但正因为有了失败的经历,对程序的理解反而更深刻,基础打好了,对以后的学习反而会更有帮助。

而另外一些人他们知道可以通过编程来解决一些数据处理问题,但是他们没有兴趣去学习,只想如何解决当前的问题,或者是叫人做或者是抄别人类似的代码,楼主所提出的不需要定义变量的理论恰恰是面向这群类型的人,反过来说,对一些没有编程兴趣的人说一些你认为是经验之谈的话是不是有点无的放矢?

基础很重要,这是任何事物学习的基本理念,今天的挫折就是明天进步的垫脚石,而在楼主的理论中,似乎是想绕过这些障碍,直奔空中楼阁,这就让人不敢苟同了。

点评

第2段总结的正确。谢谢!  发表于 2013-1-30 15:26

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-22 12:33 , Processed in 0.039094 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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