ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-1 11:03 | 显示全部楼层
softbest4u 发表于 2013-3-1 09:39
初学者最初养成的习惯是什么, 这将对之后产生很大的影响。

VB的原罪就是变量不经定义就使用,而且编译器 ...

一个代码是否称之为【垃圾代码】

主要还是看算法。


变量定义不是一定需要,
变量名称即使多用几个字母,也未必就能让别人一下子弄明白是什么含义、什么作用。

最好的方法是加完整的注释,
仅仅取名时多写一些字母,最多是多了一些关键词,变量的含义往往还是要靠猜的。

例如:
StrTemp1  你可以知道是字符型临时变量的#1,但真正要起什么作用,还是不明白。

因此,和简单一个 t1 = arr(i,1) 来说,基本是没有差别的。

你就算把变量写成 StrTemp_Table1_SeqNo ,它所能表达的含义还是有限的。
除非另加文字注释,还是需要联系上下文来看才能懂。

点评

同意这个观点:“一个代码是否称之为【垃圾代码】 主要还是看算法。”  发表于 2014-9-18 22:44

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-1 11:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
softbest4u 发表于 2013-3-1 10:16
说到底, 敢于把持这种误导性观点的帖子评为精华的人口味实在太重。太重了

哪里有误导?

不过是告诉初学者 这样一个明确存在的事实。

而防止你们这些dim强迫症的误导。← 其实你们才是误导。


…………
当然,职业编程者必须要养成【定义变量和定义变量类型】的好习惯,这个可以有。


这个和对VBA初学者的宽松要求本身没有任何矛盾。


…………

你是否非常担心,【一旦初学者在初学阶段时没有学习定义变量,然后以后就一辈子也学不会了】?

这难道不是【杞人忧天】么?



…………
如果进一步,楼主还以为:
【本帖观点的存在,将会影响今后所有编程人员养成坏习惯,导致巨大的实质性的害处,甚至影响中华名族的复兴进程……】

有这样的结论才是雷人的。







评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-1 11:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
softbest4u 发表于 2013-3-1 10:16
说到底, 敢于把持这种误导性观点的帖子评为精华的人口味实在太重。太重了

打个或许不太恰当的比喻:

你从小被灌输了: 狗是人类的好朋友,因此人不能吃狗肉……


但是有人告诉你,其实人是可以吃狗肉的,不仅有营养、味道也不错……


于是你暴躁了、狂怒了……

可是,人可以吃狗肉难道不是明确存在的事实么?

需要你从各反面来提出反对意见么?


…………
结论:

不论你举出多少个例子来说明定义变量在代码中的重要性,
都不能否定:【VBA代码可以不用dim变量而正常使用】这个真实的客观存在。


当然,本质上我并没有得出:【绝对不允许任何人写代码时定义变量】这样的结论。

如果有这样的结论出现,被你狂骂,那才是罪有应得。




点评

看到此处,多少还是追求夺人眼球的广告效应惹得事……  发表于 2014-9-18 22:48

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-3-1 11:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2013-3-1 10:48
作为职业编程者,或者是对于将来有志于成为职业编程者的人来说,

你的这些观点当然是有道理的。

你个人愿意怎样写代码, 专业也好, 爱好也罢,那是你的自由。我不予置评。

但是你跳出来, 用自己被驴踢过的脑袋去误导祸害初学者,这是不可忍受的。

你在一楼的言行, 竟然被评为精华, 你就又被驴踢了一次。

讨论, 无论多激烈都应该是互相尊重,至少尊重多方的话语权,不是我要使用“被驴踢过的脑袋”, 但是“被驴踢过的脑袋”这样的言辞格调是被你在一楼言论以精华形式永远固定下来了。

你一再强调20行代码的初学者, 非专业者, 请问,只写20行代码, 需要定义多少行变量?定义的这几行变量能给初学者带来多大的困惑?

鼓吹初学者不用定义变量, 且言辞激烈, 想危害初学者,这是不可以接受的。

我反对的恰恰是你不用定义变量的言论针对的是初学者

点评

“你在一楼的言行, 竟然被评为精华, 你就又被驴踢了一次。”此话生猛,带了一串!  发表于 2014-9-18 22:49

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-1 11:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
softbest4u 发表于 2013-3-1 11:26
你个人愿意怎样写代码, 专业也好, 爱好也罢,那是你的自由。我不予置评。

但是你跳出来, 用自己被驴 ...

当然是针对初学者,才需要解放他们,不让他们受到不必要的困扰。


那么,你还是认为: 一旦初学者知道了可以【不用定义变量而写代码】

就会【养成坏习惯、影响一辈子】

因此,【必须逼迫初学者每次写代码,一定要定义变量】?


这个难道不是法西斯行为么?


呵呵。


初学者没必要去定义变量,这个应该是正确的做法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-1 11:45 | 显示全部楼层
softbest4u 发表于 2013-3-1 11:26
你个人愿意怎样写代码, 专业也好, 爱好也罢,那是你的自由。我不予置评。

但是你跳出来, 用自己被驴 ...

至于你还有很多关于【编程是定义变量很重要,否则错误很严重】之类的话,

那个都没有必要说。因为和我的论点关系不大。


我反复说的是,【VBA可以不用定义变量而使用】以及【初学者可以不用定义变量就开始学习写代码】

这些肯定是没有错误的。


点评

现在看来,许多误解可能来源于阅读时间,即只看了1楼或最开始的部分,系统读帖,如我,太耗费精力和时间了……  发表于 2014-9-18 22:52

TA的精华主题

TA的得分主题

发表于 2013-3-4 16:42 | 显示全部楼层
我是初学者,我一般也不定义变量,但是对于如代表RANGE类型的变量还是一定要定义的,且一定要加AS RANGE,因为这样定义后,在输入变量名及后边一点后,会自动列出方法、属性列表,方便快速准确的输入(记性不好,记不住那些英文单词)。
我不知道不定义变量到底对写代码有多大的危害,但是我知道被许多人深恶痛绝的所谓坏习惯其实并不是那么难以纠正,看看驾驶员在新交规实行前后对系安全带的态度。所以,不管你那些坏习惯养成了多少年,一但这个习惯非常严重地影响了你的工作、生活,绝大多数人还是会很快纠正过来的。

点评

人都是逼出来的!!!  发表于 2014-9-18 22:53

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-4 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wangxf9209 发表于 2013-3-4 16:42
我是初学者,我一般也不定义变量,但是对于如代表RANGE类型的变量还是一定要定义的,且一定要加AS RANGE,因 ...

如果自己觉得有必要定义变量,那就去定义好了。

并且如果自己有了切身体会而需要养成定义变量的习惯时,也并不是想做而做不到的事。


…………
因此,本帖主旨其实还是这个意思:

1、 初学者不必马上去学习定义变量的各种知识,直接写代码照样可以入门。

2、 入门以后再学习定义变量的方法,并根据自己的认识取舍即可。


没必要上纲上线地把不定义变量说成是十恶不赦的坏习惯。





TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-4 17:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
因为本帖发出一个月以来,引起了不少争论。

本来目的是对VBA初学者作一个解放思想、鼓励实践的工作,
不料招来大量专业人士和老鸟,对本帖偏激的观点做了全方位的轰炸……

因此,今天在一楼主帖中做了一些补充说明,以便继续构建和谐社会!


呵呵,祝所有参与回帖的人 新的一年 高歌猛进、事事如意!


TA的精华主题

TA的得分主题

发表于 2013-3-5 21:26 | 显示全部楼层
香川群子 发表于 2013-1-30 10:42
我的主题是:

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

对于业余爱好,只想解决工作中实际问题的我,觉得楼主的观念正好是解决了我们这种基础很差的人的困惑,我是从知其然到知其所以然,当时为了定义变量,基本是小心翼翼翻到书设置的,确实痛苦。

点评

确实痛苦。用了怕错,不用被“老师”骂……错了也不知道哪里错。 奇怪的是不用反而没有问题。  发表于 2013-3-5 22:02

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-23 10:08 , Processed in 0.036572 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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