ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-2-7 13:34 | 显示全部楼层
香川群子 发表于 2013-1-29 09:05
第一个误区:
Option Explicit

可以养成一个先定义后使用的编程习惯,将来学习其他编程语言就方便多了

TA的精华主题

TA的得分主题

发表于 2013-2-10 08:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢!谢谢解困惑,学习中

TA的精华主题

TA的得分主题

发表于 2013-2-14 15:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-2-14 16:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ggsmart 发表于 2013-2-5 18:40
好吧,也说点看法。
我从小喜欢看武侠小说,就拿练武来比方吧,虽然我不是黄蓉,也不会武功。
相信大家都 ...

有一种人(纯粹的VBA使用者)被大家忽略了:
部门里有一两个专门负责数据汇总的助理(通常是女生),很累,老板的要求变来变去,我遇到过同一份原始资料要按5个格式来产出报表。
她们愿意去找提高效率的方法,但不是你我这样的爱好者,一般都是使用公式或者透视表;没学过编程,或者大学里的编程课已经完全丢给老师了,我想她们也许不需要打什么基础,弄得代码也不需要给别人看,超过50行的代码已经不是她们能驾驭的了。

点评

是的。而且有很多这样的用户一辈子就是初学者水平也就满足了。  发表于 2013-2-14 16:29

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-2-15 00:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-2-16 14:15 | 显示全部楼层
本帖最后由 LIUZHU 于 2013-2-16 14:35 编辑

       总结楼主的观点,不过是一句话,“不定义变量,程序可以正常运行”,楼主申明了VBA包容的一种情况,但不能成为一个倡导,如果初学者非要从定义变量开始进行编程,你说有没有错呢?绝对没有错,至少我是这么认为的。这么做的结果,可能开始会纠结于变量发生报错,但是这也是提高的一个必经之路,纠结得多了,自然就不纠结了,能够从容的定义变量和变量类型,也不会发生报错。
       如果有人学习楼主的观点,从此在编程中不定义变量的习惯,我想要不是楼主的帖子误人子弟,就是有人曲解了楼主帖子的意思。有时会发生这种情况,你在开始定义了变量,比如Dim r as xxx,结果程序发生报错,但是当你把定义变量的语句改成Dim r或者干脆不定义,程序反而不报错了,对于初学者而言,不定义变量类型的效果立竿见影,但这同时也带来了一个问题,程序可读性差,如果这样的程序在论坛发帖求助,可能很多人看都不愿意看,楼主的意思是,在初学阶段可以忽略变量定义,可没说中级、高级阶段也不进行变量定义。其实,定义还是不定义变量类型,只是编程的一个习惯而已,实在没必要大书特书,你喜欢不定义,那就不定义,只要你用着顺手,当然别人也不会拜读你的大作,因为大多数人不喜欢,当然你也别教别人也不去定义,你喜欢定义,那就定义,虽然花的时间会长一些,因为定义错了变量类型会导致程序报错,但从长远来看,对提高自身的VBA水平,是绝对有帮助的。总之一句话,定义与不定义,是长远利益与眼前利益的关系。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-16 15:16 | 显示全部楼层
LIUZHU 发表于 2013-2-16 14:15
总结楼主的观点,不过是一句话,“不定义变量,程序可以正常运行”,楼主申明了VBA包容的一种情况, ...

你总结的一句话“不定义变量,程序可以正常运行”

…………

这个基本上我确实是反复强调了这个意思,
但实际上仅仅这一点还不能算是正确理解了我的倡导。
也就是说,你的总结和我反复讲的还是有很大出入。



我的真正意思应该是:
1. 大部分简单的Excel VBA程序代码,不用定义变量也能正常运行。
2. 对于初学者来说,不定义变量就使用基本上不会有问题,反而可以避开一些变量类型不符合的陷阱。
3. 初学者可以在较为熟练地掌握代码以后,再开始学习变量的定义方法和变量类型的定义。
4. 有相当多的初学者或许一辈子也不会去成为职业编程者。
5.   → 对于这样的Excel初级用户,没有任何理由因此而强求他们一定要去学习定义变量的技巧。
6.  没有任何理由因为定义变量对将来成为职业编程者会是一个好习惯而从道德层面上去强调这样做的正确性、正统性。


TA的精华主题

TA的得分主题

发表于 2013-2-16 15:21 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-16 15:45 | 显示全部楼层
LIUZHU 发表于 2013-2-16 14:15
总结楼主的观点,不过是一句话,“不定义变量,程序可以正常运行”,楼主申明了VBA包容的一种情况, ...

【楼主申明了VBA包容的一种情况,但不能成为一个倡导……】

呵呵,我确实想要倡导如下:
VBA初学者,一开始不需要学些定义变量和定义变量类型。
可以到了中级程度以后,根据自己的需要再来学习这部分内容。

理由: 不去定义变量也能正常运行代码。




【如果初学者非要从定义变量开始进行编程,你说有没有错呢?绝对没有错,至少我是这么认为的。】

→ 对或错,是要看你的价值观决定的。
世界上没有绝对的【对】与【错】。
而且,往往客观上有些【对】的做法,在另外一些场合是【错】的。

那么,我认为:
让初学者在完全不懂VBA知识时就要求他们去定义变量,是一种错误的教育方式。



【但如果有人学习楼主的观点,从此在编程中不定义变量的习惯,我想楼主的帖子实在误人子弟了。】

→  即使这个成了习惯,也不至于误人子弟。

因为:
如果你将成为一个职业编程者,那么即使你到目前为止没有养成这个习惯,
也将被要求养成这个习惯,因为这个是职业编程者的必须习惯。

如果你永远都是自己写代码自己用,那么不需要这个习惯就没有任何问题。


【……对于初学者而言,不定义变量类型的效果立竿见影,但这同时也带来了一个问题,程序可读性差,如果这样的程序在论坛发帖求助,可能很多人看都不愿意看。】

→ 呵呵,因为不定义变量,而造成了程序可读性差?

我想你是乱说一通了。

程序可读性差的原因是:
1. 代码没有完全按照逻辑结构排列
2. 代码开始的缩进没有规范应用
3. 代码算法本身思路混乱
4. 变量名称太过随意,或含义不明确。

…………
但是,没有一条是因为没有dim照成的。
反之我可以问你,是否所有变量不管三七二十一都 dim一遍以后,程序立即就可读性变强了?
这样的结论一点也不科学。

在这里必须强调一点,我赞成不dim变量就直接使用变量,
但从来没有说变量名称的取名可以不规范、乱来。这个希望楼主不要搞乱。


【其实,定义还是不定义变量类型,只是编程的一个习惯而已,实在没必要大书特书,你喜欢不定义,那就不定义,只要你用着顺手,】

→ 这一句没问题

【当然别人也不会拜读你的大作,因为大多数人不喜欢,】

→ 这一句莫名奇妙。
我写的很多代码是大受欢迎的。
似乎没有人因为代码中找不到dim语句就生气、然后就说这个代码不用看了……
大部分人,尤其是面向初学者的代码,是只要有作用就可以了。

在这里,我还可以告诉你,我写的代码可读性很好,
重要原因之一: 如果对方是初学者,我会每一句代码都加中文注释!
但是除非必要,否则不会有dim语句。



【当然你也别教别人也不去定义,你喜欢定义,那就定义,虽然花的时间会长一些,因为定义错了变量类型会导致程序报错,但从长远来看,对提高自身的VBA水平,是绝对有帮助的。】

→ 既然是长远来看,那么一开始不去定义变量就是正确的做法。
  你可以以后弄懂了数据类型以后,再补上这一课。


【总之一句话,定义与不定义,是长远利益与眼前利益的关系。】
→ 总之一句话,我认为VBA初学者可以不用去学习定义变量,而先开始写代码、用代码。
   用到一定程度以后,就会明白了。

  甚至一辈子水平没有提高,只能写一些50行、100行的简单代码也没关系。
  只要能够快乐地使用Excel VBA代码就足够了。


以上

TA的精华主题

TA的得分主题

发表于 2013-2-16 16:16 | 显示全部楼层
好家伙,还没完啊!
其实,正确的结论是:在编程时变量需要声明,当在一些特定的情况下可以省略变量声明(比如代码不超过20行)
很多回帖持反对态度的,多数都不是做软件的,而是经过深入学习后认为片面(或者极端的)告诉刚刚进入VBA天地的人:“声明变量是多此一举”,明显是错误的。女侠此贴是因为一个初学者的求助帖,这个帖子中代码行数不超过20行,我也看过。没想到女侠居然会产生如此野蛮的想法。
声明变量除是养成好习惯(我到现在也没有养成这个好习惯,原因就是当初太急功近利了),还有便于检查错误。随着深入,变量声明涉及的概念性问题还有不少,会影响变量传递,会造成模块、类模块应用的麻烦
另外,使用VBA的新手老手之间,不存在太明确的分野。当使用窗体后很快就可能使用模块了。这时变量声明的概念如果含糊不清,麻烦会更多
说老实话,不要说变成职业的编程人员。就是业余的我也觉得仅仅靠VBA,很多问题不易解决。
虽然这个帖子的争论不会分出对错,但一楼的观点显然太极端了

点评

“野蛮的想法”,够辣,够味!!!  发表于 2014-9-18 21:17
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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