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-2 20:46 | 显示全部楼层
本帖已被收录到知识树中,索引项:数据类型和基本语句
支持一楼的观点。
不熟练使用变量,很难理解为何代码要职责清晰,如何职责清晰,为何变量要和方法(函数)相关联。
前期习惯不使用变量,后期要改过来要付出更多的努力。
除错是每个写代码的人必须面对的,对于使用变量的代码要比不使用变量的代码要容易的多。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-2 21:28 | 显示全部楼层
本帖最后由 joforn 于 2013-2-2 22:01 编辑

一个良好的编程习惯,就像是给小树苗浇水,短时间内看不出有什么效果,但是却是小树苗成长成参天大树的一个条件之一。

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2013-2-2 22:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主举了代码实例,这很好。

讨论问题也有了基础。

不过,或许我的理解和楼主的本来目的还是有不同,
所以分析结果可能不符合楼主的本意,但还是忍不住要说几句。

Sub Test0A()
  A = 123  '显然数据类型属于数值型
  B = "A123" '显然数据类型属于文本字符串型
  C = 123 '显然数据类型属于数值型

  Debug.Print A + B ’本句代码A+B运行出错,提示类型不匹配,无法得到运算结果,程序被迫中断
  Debug.Print A + C '本句代码A+C运行正常 得到=123+123=246的结果
End Sub


Sub Test0B()
  Dim A As String, B As String, C As String '定义A、B、C三个变量为文本字符串变量
  A = 123 '变量赋值结果,因为已经定义为字符串变量,所以实际赋值结果="123"
  B = "A123" '变量赋值结果="A123"
  C = 123 '变量赋值结果,因为已经定义为字符串变量,所以实际赋值结果="123"

  Debug.Print A + B
  Debug.Print A + C

’这两句代码都是【+】运算,但因为变量都是字符串类型,那么运算结果不是数值算术相加,而是字符串相连

End Sub

………………
判断结果,第一个代码实例1,没有使用dim语句定义变量,
因此,在执行变量【+】运算时,会因为变量数据类型不同而无法处理(数值型+文本型 产生类型不匹配错误)

这个结果,对于我来说,不仅不是未使用dim造成了麻烦,反而是不使用dim带来的莫大好处:
【自动检查到了类型不匹配错误】

而参考代码实例2中,使用了dim语句以后,能够运算得到结果。
但我认为这样的代码编写方法,是错误的、不良的习惯。

如果是我来写,那么已知字符串变量的连接,不会去使用【+】运算符,而是直接使用【&】来连接。

…………
至于是否专业编程人员,总是习惯把文字字符串类型的连接用【+】运算来实现,
并认为这才是一种标准的、最好的代码方法,这个我不知道。

反正我是没有这样的习惯。

呵呵,再说一遍,或许楼主想要说明的完全不是这个意思,
但我看到的却是dim变量并没有带来好处,反而导致让新手更容易产生失误的一种可能。



点评

使用+号来连接字符串却是初学者常用的方式。  发表于 2013-2-3 00:03

TA的精华主题

TA的得分主题

发表于 2013-2-2 22:27 | 显示全部楼层
liucqa 发表于 2013-2-2 17:58
嗯,大神果然谦虚!

你这评论真的假的?

在我心里你才是大神级别的,怎么动不动就把别人当大神了呢? 真是毁我三观啊。

点评

俺是伪神  发表于 2013-2-2 23:31

TA的精华主题

TA的得分主题

发表于 2013-2-2 23:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
留个记号,学习方便,谢谢了

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-2 23:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 joforn 于 2013-2-2 23:56 编辑
香川群子 发表于 2013-2-2 22:22
楼主举了代码实例,这很好。

讨论问题也有了基础。

呵呵,我知道很多人会以为那个+号是数值运算符中的加号。
要知道+也是字符串连接字符,有很多人是用"+"这个符号来做字符串的连接,而不是用&,这两个符号在那个例子中是同一个功能。
存在就是道理,总不能说你不用的方法,别人用了就是错误的吧。虽然我自己从来不用+来做字符串的连接,但是我也见过很多初学者在使用这种方法,你总不能说他们的老师教错了或是VB语言的设计者错了吧?

点评

【很多人会以为那个+号是数值运算符中的加号】 幸好我不属于你所说的很多人之中……  发表于 2013-2-3 00:24

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-2 23:50 | 显示全部楼层
本帖最后由 joforn 于 2013-2-3 00:08 编辑

       如果人人都把自己的习惯当成是标准,那么这世界上就没有什么标准了。
       如果是自己的代码自己看,想怎么写都是自己的自由,谁也管不了。但如果是写的代码要和别人一起用,某些规则下的标准只要不是很费时,完全可以遵守。
       我的意思是:如果不觉得声明一个变量是很费时、费力,并且声明的变量不会造成代码出问题的情况下,声明一下,多打几行代码而换来将来的方便,还是值得的。
       当然,初学者在刚开始确定可能有时会有些迷茫,不知道要把变量声明成什么类型好。不过我在一楼也说过,其实在刚开始的情况下,只要记住下面几种就好了,整型就用Long,小数就用Double,逻辑就用Boolean,字符串就是String,对象就直接用前期绑定方式最好。如果说这几种都记不清的话,那么我真不知道如何去面对更为复杂的文句结构,还有对象属性之类的。要知道用前期绑定的话,一打变量名之后加个.就能有属性提示,对于初学都来说,这是一个最好的老师。

TA的精华主题

TA的得分主题

发表于 2013-2-3 00:13 | 显示全部楼层
joforn 发表于 2013-2-2 21:28
一个良好的编程习惯,就像是给小树苗浇水,短时间内看不出有什么效果,但是却是小树苗成长成参天大树的一个 ...

这个可以有。

如果你今后经常要编程,甚至以编程为职业的话。

(这里的编程应该不包括几十行的VBA应用宏代码)


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-3 00:18 | 显示全部楼层
香川群子 发表于 2013-2-3 00:13
这个可以有。

如果你今后经常要编程,甚至以编程为职业的话。

写代码就像堆积木。代码写得好不好,不在于代码的长度,而在于是否使用了合适的方法。
写代码就像是写文章,用什么文体并不重要,重要你的文章别人是否看得懂。

点评

这个多得表示同意  发表于 2013-2-5 20:53
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-3 01:16 , Processed in 0.032427 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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