ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 关于变量声明的讨论

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:18 | 显示全部楼层
本帖已被收录到知识树中,索引项:数据类型和基本语句
joforn 发表于 2013-2-2 23:50
如果人人都把自己的习惯当成是标准,那么这世界上就没有什么标准了。
       如果是自己的代码自己 ...

不谈编程,仅就VBA新手写宏代码的事为例子,

有一些变量只能使用Variant,用了其它变量类型反而不好……


正因为有这样的例子在,所以对于初学者来说,倒是不去定义变量类型更好,更省心。

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
joforn 发表于 2013-2-2 23:36
呵呵,我知道很多人会以为那个+号是数值运算符中的加号。
要知道+也是字符串连接字符,有很多人是用"+"这 ...

印象中,这种用法似乎是某种初级编程语言的习惯吧。Dos Basic之类的?

…………
对于有这种使用习惯的编程者来说,Dim 是必须的。这个就毫无异议了。


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-3 00:26 | 显示全部楼层
香川群子 发表于 2013-2-3 00:18
不谈编程,仅就VBA新手写宏代码的事为例子,

有一些变量只能使用Variant,用了其它变量类型反而不好… ...

呵呵,变体本身只是为了方便COM编程时的数据在COM中互为转换,如VBS中所有的变量都为变体类型。但是我从没听谁说过,为了一小部分的代码而所有的代码全部都使用变体更好。
就像是会计计帐,我估计他能容忍数据溢出报错,估计也不能容忍跑了十几分钟的程序之后,得到的总数是以1000为单位的吧?估计这样的报表出来,对帐也能把人对死。

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:26 | 显示全部楼层
lu_zhao_long 发表于 2013-2-2 21:33
我习惯先声明后使用,虽然不是必须的!好处就像楼主所说的那样。

【虽然不是必须的!】

知道不是必须的,并且敢于告诉初学者这个明确的事实,就是我正在做的事。

点评

如果你真的这么做了,那我只能不客气地说你不能算作一个合格的老师!  发表于 2013-2-3 10:15
希望群子小姐能够明白我说的意思,不要断章取义!否则会误导后来者的!这个问题没有绝对的对与错。作为一个老师在指导学生的时候,更要告诉他/她这个问题的两面性。而不是简单地告诉他/她不要去探索!  发表于 2013-2-3 10:14

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-3 00:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 joforn 于 2013-2-3 00:34 编辑
香川群子 发表于 2013-2-3 00:22
印象中,这种用法似乎是某种初级编程语言的习惯吧。Dos Basic之类的?

…………

不知道如果出现Test1A()的这种情况,当这个初学者问你为什么+1会小于-1,你会怎么解释给他听?
难道解释说,这个只是计算机偶尔抽风所致?
或是告诉他,哦这是因为变体型变量在使用时,数据有时是字符串,有时是整型,有时是小数,而这种情况,刚好计算机把这个变量当成了字符串而不是数值型数据来处理的,如果没有正号,那么计算机会用整型来比较。估计这么一说,他要不就是从头去学变量,要不就是更晕乎了吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-3 00:38 | 显示全部楼层
本帖最后由 joforn 于 2013-2-3 00:38 编辑
香川群子 发表于 2013-2-3 00:26
【虽然不是必须的!】

知道不是必须的,并且敢于告诉初学者这个明确的事实,就是我正在做的事。

没人说变量必须要先声明,反对你的人意思都很明确:变量声明百利而无一害。如果说花费的一点点时间也算是有害的话,那么请你告诉大家:学什么是不用花时间的?

点评

到此为止,我反对的就是:“变量要先声明,这是个好习惯” 如果不反对【没有必要事先声明所有的变量】,那就没得争论了哦。  发表于 2013-2-3 01:24
【没人说变量必须要先声明,】你的立场有变?!  发表于 2013-2-3 01:20

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:39 | 显示全部楼层
dajiahaoxinku12 发表于 2013-2-2 19:44
还是支持 想穿裙子的观点,对于初学者来说还是越简单越好,从简单到难

是的。

我的真实思想也就是如此。

初学者应该可以从不定义变量就能写出可以使用的宏代码开始以便更快地进入动手阶段,
从简单到复杂,积累了一定的经验以后,再慢慢学习使用dim定义变量类型的用法和技巧,
这样做应该是完全可以的。

为什么那么多人会认为这样做就=没有养成好习惯=以后要吃很多苦头
甚至认为这样做的后果就是永远也不会再有好习惯了……影响到很多人的一生了……

呵呵。

真是有趣的强迫症。

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 香川群子 于 2013-2-3 00:51 编辑
joforn 发表于 2013-2-3 00:18
写代码就像堆积木。代码写得好不好,不在于代码的长度,而在于是否使用了合适的方法。
写代码就像是写文 ...


知识是学习得来的。

有时候正确的知识更是在反复的失误中得来的。

而正确的知识是可以打败错误的知识留在人的脑袋中并一直发挥积极作用的。

所以,担心一开始的做法不是好习惯……这个似乎有点担心过头。


…………
我认为,如果一个人没有养成必须的好习惯,那么纠正可以如下:
1. 让他充分学习并知道好习惯的好处,以及错误习惯的坏处。
2. 让他在一段时间内反复练习以便纠正坏习惯养成好习惯。


至于这个人之前没有形成所谓的“好习惯”,首先要看到这个习惯对他来说是否必要。
如果不是必要,又何必强求?


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:56 | 显示全部楼层
joforn 发表于 2013-2-3 00:18
写代码就像堆积木。代码写得好不好,不在于代码的长度,而在于是否使用了合适的方法。
写代码就像是写文 ...

好代码的精髓在于算法。

是否定义变量以及是否按照好的命名规则来命名变量……这些个虽然确实是有好处,
也大致可以根据这个一眼看出写代码的人的基本编程素质,但和代码本身写的是好还是不好,关系不是很大。

点评

是的,算法是程序的精髓。 让一个初学者先精通算法后再去学变量的确是一个好办法,因为这样容易多了。就像是让一个拿到了A+++照的人再回去考C照一样简单。  发表于 2013-2-3 08:21

TA的精华主题

TA的得分主题

发表于 2013-2-3 01:02 | 显示全部楼层
joforn 发表于 2013-2-3 00:38
没人说变量必须要先声明,反对你的人意思都很明确:变量声明百利而无一害。如果说花费的一点点时间也算是 ...

又看到了【百利而无一害】的说法。

仅仅花费一点时间确实不是什么问题。

然而事实是,对于VBA初学者(不是针对立志成为程序员的)来说,
一开始就要求定义变量确实是勉为其难,并且造成错误的例子屡见不鲜。



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

本版积分规则

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

GMT+8, 2024-11-17 05:52 , Processed in 0.033021 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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