ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-2-3 01:08 | 显示全部楼层
本帖已被收录到知识树中,索引项:数据类型和基本语句
joforn 发表于 2013-2-3 00:29
不知道如果出现Test1A()的这种情况,当这个初学者问你为什么+1会小于-1,你会怎么解释给他听?
难道解释 ...

你的解释完全错误。

是故意的么? 还是你自己就已经理解错误了?

点评

我觉得这个问题不是初学者能遇到的,要我回答的话,首先应当恭喜这位进阶了。  发表于 2013-2-4 21:50
哦,那你解释一下,为什么会出现正1小于负1?  发表于 2013-2-3 08:24

TA的精华主题

TA的得分主题

发表于 2013-2-3 01:10 | 显示全部楼层
到这里充分体现了一句话
"写代码<>编程"

大人说:小朋友,你还小,写字可以顺便来,写得草一点也没有关系.或许你以后长大了,永远都是写几个字给自己看.不用太认真.
小朋友长大了,却发现,要把字写好,真得好难.

点评

好像大人都只是说字写好点更好些,没有说字写的不好就重做,必须写得好才能吃饭睡觉吧  发表于 2013-2-4 21:52

TA的精华主题

TA的得分主题

发表于 2013-2-3 01:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
excelhomeljch 发表于 2013-2-3 01:10
到这里充分体现了一句话
"写代码编程"

问题是:

1. 真的有很多小朋友长大了也不用写很多字 【文盲、或者老板(是开玩笑啊)】

2. 如果真心想要写好字,或者说真心希望提高自己的写字能力,任何时间重新开始都不算晚。

TA的精华主题

TA的得分主题

发表于 2013-2-3 01:32 | 显示全部楼层
索性再展开分析一下:

小孩子分两种,好好写字的和不好好写字的,那么长大以后,实际上的情形会是这样:

1. 小时候好好写字   到 长大了写字很好
2. 小时候好好写字   到 长大了却写不好字了
3. 小时候不好好写字 到 长大了写字很好
4. 小时候不好好写字 到 长大了也写不好字



TA的精华主题

TA的得分主题

发表于 2013-2-3 02:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主1楼没有提到变量声明后的大小写自动更正,这是很重要的特性。

至于裙子小姐契而不舍的在这个贴子里争论是不是很无谓呢,坚守自己的阵地吧~
感觉你就像是海滩上发现了个漂亮的贝壳的小孩,到处炫耀,而不远处有很多珍珠却视而不见。
这是揣着糊涂装明白啊~

点评

哈哈,有小朋友捡到贝壳很高兴,给小朋友到处去说;有很多大人在一边大摇其头,海里有珍珠呀,就算现在还小采不到珍珠,也不能先捡贝壳,那样以后采珍珠就很难了。  发表于 2013-2-4 22:00
呵呵,某些人的确是有点像你说的那样。自己明知道这样做是有好处的,却偏偏要对着别人叫:不能这样做!这样做会害了你!  发表于 2013-2-3 08:39
呵呵,是小孩子犟嘴呢,我姑娘就这样...  发表于 2013-2-3 02:40

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-3 08:28 | 显示全部楼层
本帖最后由 joforn 于 2013-2-3 08:34 编辑
香川群子 发表于 2013-2-3 01:28
问题是:

1. 真的有很多小朋友长大了也不用写很多字 【文盲、或者老板(是开玩笑啊)】

按你的说法,是不是建议别人不用再学VBA编程了?只要学赚钱就行了,请个高手写就行了,还用学什么VBA?
本来就是针对想学的人给的建议,而你一再说,让不想学VBA的不去学变量。不想学VBA的当然不用学变量,只要给点钱,直接买代码或是直接买个系统也行啊。

TA的精华主题

TA的得分主题

发表于 2013-2-3 09:18 | 显示全部楼层
香川群子 发表于 2013-2-3 01:32
索性再展开分析一下:

小孩子分两种,好好写字的和不好好写字的,那么长大以后,实际上的情形会是这样: ...

建议女侠重新讲一下“变量定义”,不偏激地讲
另外,学习VBA时,初学与进一步提高之间,没有很深的沟,也不需要很长时间
个人体会,从看不太懂基本的VBA语句到学习用模块、类模块来解决问题,时间跨度两年差不多吧
坦率讲,到现在我也没有养成认真定义变量的习惯。但不等于说就此可以忽略这个问题
不管怎么说,VBA可以用“Option Explicit”来规范变量,也可以不用。这其中自有道理

TA的精华主题

TA的得分主题

发表于 2013-2-3 09:49 | 显示全部楼层
本帖最后由 lu_zhao_long 于 2013-2-3 09:51 编辑

几个月前,我的妹妹在我的影响下也开始学习 VBA。她把书上的一个自定义函数代码照抄了一遍(美国人写的一本书)。在使用的时候一直不能得到正确的结果。后来她只好将写好的代码通过邮件发给我。我也费了老半天劲,最后才发现是其中的一个变量分别在赋初值的时候和赋最后结果的时候调换了其中两个字母的顺序(我现在记得应该是 *se* 被她写成了*es*)!
就这么一个小小的问题在调试的时候却费了那么多的时间!真是太不值得了!如果在一开始就强制声明变量的话,那么在调试的时候肯定就能立即被发现!

还有一个习惯是不能言说的。估计我一说出来会遭到痛批的!那就是变量的名称尽量使用英文。比如,我经常这样写 Dim LastRow As Long(意思是 Last Row,最后一行。不用添加注释就能很容易地看明白)。当你使用强制声明以后,只要你在一行代码中输入 lastrow(全部是小写字母) 并回车后,VBE 语法会自动将它变成 LastRow(与声明时候的大小写格式完全一样)。如果不小心你写错了,比如你写成了 lsatrow,当你回车换行的时候,那 VBE 语法检测就会认为它是一个还未声明的新的变量,除了保持不变而外,在调试的时候会直接跳到这个变量所在的代码处,告诉你它还未被声明,暂时不能使用!
使用英文变量名称还有一个好处,无论在任何语言版本的 Windows 操作系统下都不会出错,而且都可以使用!我现在一个美国公司工作,不仅面对中文操作系统,还有英文操作系统、日文操作系统和韓文操作系统。相信没有几个人会为这几个操作系统分别重写一遍代码吧?

还有,我是做生产控制自动化的。简单来说,就是跟 PLC/DCS 打交道的人员(但我在大学却是学高分子化工的)。在 HMI (人机界面)上也要使用 VBA 代码。我们这些人的工作是靠多个人合作来共同完成日常工作的。如果一个人写错了一段代码,调试人员却不能在最短的时间定位到有问题的代码处,请各位想想看后果会如何呢?!应该停下来的设备不能停下来………爆炸………人员伤亡…………
反正我是不敢想像!

所以,我还是支持楼主的观点的,特别是多个人共同合作写代码,但调试却是另外的人员的时候。当然,一个不喜欢写声明的人员想在某天一下子改变习惯是很难的!如果不是参予大的工程项目,不喜欢强制声明变量也无关紧要!

实际上,是不是需要变量声明这件事情,两种观点一直在争论,没有绝对的谁对谁错!如果在论坛上争论下去,恐怕没有尽头!

所以,建议没有必要再继续争论下去了!

TA的精华主题

TA的得分主题

发表于 2013-2-3 09:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ZHYZ 于 2013-2-3 10:44 编辑

本来不想说的,
你们讨论的主题是什么?首先要弄懂这个问题,也就是编程的习惯问题,偏移这个中心,永远不会有结果
比如:
ShuZhi = 123
MsgBox ShuZhi
这个VBA自动识别ShuZhi是什么类型,
如果先用Dim定义,也没什么问题,这有什么讨论
香川群子讲的不需要定义变量,系统自动识别,没有错
问题是讨论规范问题,
如果代码很少,并且自己做自己用,数据表不需要修改,不是给别人做的,自己又懂得运行原理,一看就懂那没问题,
如果像其他语言编程,几个人共同搞一个程序,通俗的用VBA编程比喻,一个人负责做界面,一个人负责编模块,一个人负责编类模块,一个人负责合成并调试,
那么适当的定义数据类型就有必要了,因为客户对一个程序又有了新的要求,甚至在程序完成一年后要求修改 ,那么就有用了。
规范编程习惯和规则那是为了程序代码留存和后期维护方便,

香川群子讲的没错,诸位讲的也没错,编程的规范是要的,否则微软的编程员要强调Dim做什么呢,
我想偏离了中心问题,搞得面红耳赤有什么意思

如上楼讲的编程时最好用英文,而最好不要用中文

一楼的标题如果改为“规范编程习惯 的好处”就好了

点评

您说得对! 问题是我说的是关于初学者初学阶段的事,但他们非要认为这是关系到一生的编程习惯,不容怀疑……于是就争论不休了。  发表于 2013-2-3 10:50

TA的精华主题

TA的得分主题

发表于 2013-2-3 10:02 | 显示全部楼层
andysky 发表于 2013-2-2 20:25
养成了不定义变量的习惯,后患无穷

久未见罗大师,怎么感觉苍老了?{握手}
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-19 06:29 , Processed in 0.032203 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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