ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-22 13:30 | 显示全部楼层
bluexuemei 发表于 2013-2-22 10:55
我个人觉得养成一个良好的编程习惯是非常重要的,坏习惯一旦养成是很难改正的,只能用一个好习惯去取代坏习 ...

【坏习惯一旦养成是很难改正的……】


听到好多人都是这么说,
但我认为这个说法是有问题的。

具有坏习惯的人,不是因为有了坏习惯而一直坏下去,
而是因为他意识不到自己的行为是个坏习惯,或者是没有能力来改变这个习惯。


比如,有人喜欢随地吐痰,并成为一个“坏习惯”

其实真正的原因是,他自己从来就不认为【随地吐痰】是一个影响他人的坏习惯,
而只是觉得【随地吐痰】非常方便。


…………
如果他的生活环境是在农村、那么面对大地蓝天、不光是【随地吐痰】,就算是【随地大小便】,
也没有什么大问题。


…………
但如果他生活在城市繁华中心,那随地吐痰就会显得很脏,吐出的痰里还有细菌、病毒可能会影响他人健康,因此这显然是很不好的。


那么问题是:
一个从小生长在农村,养成了【随地吐痰】坏习惯的人,
是否长大以后到了城市也永远会【随地吐痰】而无法改正?!

答案是明确的:
所有农村出生的,在城市生活的人都可以很快学会【不随地吐痰】的好习惯。

前提是他已经生活在城市里并且喜欢城市生活并以城市作为自己的生活来源。


就这么简单。


…………
或许打个比方,
我现在就相当于对广大农村的孩子说:
没事,你可以随地吐痰。 只要你现在还不在城市生活,就可以随心所欲地吐痰。
那些所谓【随地吐痰】就是坏习惯的城市人是【多管闲事】了!

当然,如果你以后要进入城市生活,那么【随地吐痰】是不可以的。


甚至于有些人会一辈子生活在农村,一辈子【随地吐痰】。(永远是个初学者水平)


呵呵。





TA的精华主题

TA的得分主题

发表于 2013-2-22 16:48 | 显示全部楼层
下面一段代码,先在没有 Option Explicit 的情况下调试,然后再在有Option Explicit的情况下调试:
Sub test()
    Dim ssssssssssssss As String
    sssssssssssss = "AAA"
    MsgBox ssssssssssssss
End Sub

liucqa说的好:Option Explicit+Dim 是防止手误的唯一办法。这不单是对初学者来讲,对老手来讲也是一样的。
Option Explicit+Dim 来定义变量是必须的,定义变量类型对初学者和一般计算程序来讲可以忽略。

点评

正是你的【必须】两个字暴露了问题: 没有必须的说法。  发表于 2013-2-22 17:12

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-22 17:10 | 显示全部楼层
extyg 发表于 2013-2-22 16:48
下面一段代码,先在没有 Option Explicit 的情况下调试,然后再在有Option Explicit的情况下调试:
Sub te ...

举这种极端的例子有意义么?

在下面一大堆【下】里面找到一个【卞】字,这种意义么?


下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下卞下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-22 17:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
extyg 发表于 2013-2-22 16:48
下面一段代码,先在没有 Option Explicit 的情况下调试,然后再在有Option Explicit的情况下调试:
Sub te ...

回你一个例子:

Option Explicit
Sub test()
    Dim s001 As String
    Dim s011 As String
    Dim s111 As String
    Dim s101 As String
    Dim s110 As String
   
   …………   
   
End Sub


就这样子,光是用了Option Explicit ,你就一定能保证不会用错变量么?


结论:
遵守变量命名的必要规则,便于记忆和区分的命名方法,才是不用错变量的好习惯。


Option Explicit 仅仅是可以帮助你不产生因为简单的拼写错误导致未定义变量名的误用,这样一种错误。



TA的精华主题

TA的得分主题

发表于 2013-2-24 03:42 | 显示全部楼层
我认同楼主的说法,我就是个初学者。
初学者学习VBA就像,就像幼儿园的小朋友学英语一样,只要他们会读就行了,关键在于提高他们学习的兴趣,他们才会更想去学,才会学的更好,如果一定要他弄清楚为什么要这样读,一太学浪费时间及精力了,更重要的一点是让他们少了学习的乐趣。当然到了一定的阶段后还是搞明白原因。
去年我刚接处VBA时,也是去想记那变量,后来发现不用也行,而且不会有引响,所以我建议初学者还是删除强制声明,但要尽量去用声明。

点评

【当然到了一定的阶段后还是搞明白原因。】→ 能明白这一点就没有问题了。  发表于 2013-2-24 08:46

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-2-24 16:38 | 显示全部楼层

TA的精华主题

TA的得分主题

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

Option Explicit
我一直使用,只不过不是一键一键自己打出来,勾选好选项,VBE会自动加上,很方便。

LZ说“使用和不使用Option Explicit,对程序的实际使用没有任何影响。”,这个不错,对计算机而言,你用VBA写代码还不如用二进制代码,计算机“更喜欢”的是二进制,问题是你行吗?

点评

你的比喻能力太强大了,不知道你的内在逻辑是啥意思?  发表于 2013-2-25 14:59

TA的精华主题

TA的得分主题

发表于 2013-2-25 14:59 | 显示全部楼层
香川群子 发表于 2013-2-17 10:11
微软提供了声明变量,或不声明变量就使用的选择,
本身就说明不声明变量的用法是完全可以的,并且也是有 ...

    编程这事,就像翻译,把人的意图用编码的方式“告诉”计算机,让计算机去实现(计算机不会抱怨、任劳任怨童叟无欺嘛),想省事最好的办法就是不需要这样的翻译或者说不需要编程者来当这个翻译,计算机就能懂你(不知道什么时候才会实现),但目前还没有哪个超人能发明出这样的计算机,没办法,编程语言开发者只能绞尽脑汁想办法让计算机“读懂”代码。我想如果可能的话,微软想提供的肯定不是现在这样的VBE,而是直接用“自然语言”控制的应用,让变量常量过程函数统统终结,这样用户体验多好啊,大家省心!
    但目前的现实是:“人不懂机的心、机不懂人的心”,所以用VBE将代码显示给人看,将机器码只“告诉”给你的机器,你怎么写代码机器不会为此而担心的,它任劳任怨、只管按VBE “告诉”它的“指示”行事。我要说的是:VBE中的代码是给人看的,机器只懂机器码。如果你是牛人,能直接用机器码与计算机通信,你想怎么折腾,cpu照样听你的,还变量呢,连操作系统都可以无视!

点评

读此段话,学了很多!  发表于 2014-9-18 22:36

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-25 22:20 | 显示全部楼层
jinsinfo 发表于 2013-2-25 14:59
编程这事,就像翻译,把人的意图用编码的方式“告诉”计算机,让计算机去实现(计算机不会抱怨、任劳 ...

呵呵,你前一个帖子要表达的意思似乎是可以看懂了。

但是你在这些句子中想要提出或表达什么样的观点,还是有些感觉模糊。

……
跨越太大了。

我只能凭感觉说,你是反对我在主贴中提倡的做法的。

但是你要说的,和我谈的情况几乎沾不上边。……你是一个很有趣的人。









TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-25 22:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jinsinfo 发表于 2013-2-25 14:59
编程这事,就像翻译,把人的意图用编码的方式“告诉”计算机,让计算机去实现(计算机不会抱怨、任劳 ...

另外,猜测你的推论是:

现阶段计算机还不够智能化,所以应该使用Option Explicit,应该主动声明变量……。

但是现实是:Option Explicit 只是勾选项目,不是必须的。

并且,微软工程师已经很努力地改善,使得VBA初学者可以不用进行显式声明变量就能写代码。

你难道不知道么?



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

本版积分规则

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

GMT+8, 2024-12-23 21:03 , Processed in 0.041901 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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