ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-29 21:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wj2368 于 2013-1-29 21:08 编辑

没有什么好争论的!楼主说的是初学者在没有弄清变量定义时完全可能不去定义。只有学习知识,可全面也不寻找捷径的。

TA的精华主题

TA的得分主题

发表于 2013-1-29 21:32 | 显示全部楼层
楼主被老鸟围攻是必然的,呵呵呵。
声明变量当然有N个好处(知道这些好处的人,其实也不需要看本贴。)
但是我必须承认,裙子的说法是正确的
这也是为什么VBA的设计者允许不声明变量,因为大多数VBA的使用者都不需要关心细节,排错,效率等等
只希望程序能尽快运行,代码能少一行就少一行吧。
Excel本身的录制宏也根本不声明变量嘛。

点评

是的,录制宏不出现变量,如果需要只能手工修改录制宏加入变量。 但是,VBA宏代码不用定义变量也能运行是一个客观事实。  发表于 2013-1-30 08:40
录制宏不会出现变量吧  发表于 2013-1-30 08:32

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-1-30 07:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-30 08:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-30 08:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-30 08:31 | 显示全部楼层
对于初进VBA大门,先大致了解VBA是怎么回事,由浅入深,逐步提高,个人认为香川老师说得对!

TA的精华主题

TA的得分主题

发表于 2013-1-30 08:40 | 显示全部楼层
本帖最后由 liucqa 于 2013-1-30 08:40 编辑

考虑到默认变量会有一个初始值,所以如果手误导致输入错误的话,vba在运行的时候很可能不报错,而导致运行结果错误,这样也会造成初学者的迷惑。
我见过很多没入门的童鞋被初始化的变量折磨了。

所以,我还是建议保留Option Explicit

至于Dim语句,目的是为了智能判断对象的方法属性,写代码的时候会更方便,但同时也对使用者提出了更高的要求。因此,初学者用不用这个语句,自己衡量好了。原则上,等水平到了初级,不用老师要求,自然自己就知道要写dim了.

初级以前的菜鸟阶段,如果代码不超过40行的话,听群子的也可以,只是不要把这些话当成真理而坚持即可。

点评

“只是不要把这些话当成真理而坚持即可”,真是平和中透露着犀利!!!  发表于 2014-9-17 21:43

TA的精华主题

TA的得分主题

发表于 2013-1-30 08:45 | 显示全部楼层
佛曰:莫执着。想穿裙子就穿吧,管他是男是女!如果是男人,想穿裙子,无可非议,如果是女人,想穿裙子那可有问题了。

点评

一下子说得群子女侠没话接了……大侠字字珠玑!  发表于 2014-9-17 21:44
oh,yeah これは併音の問題だろう。  发表于 2013-1-30 08:54

TA的精华主题

TA的得分主题

发表于 2013-1-30 09:00 | 显示全部楼层
VBA的使用需求在初期多是自动化处理APP内的对象的,变量需要少甚至不需要,不声明关系不大。
但一旦变量较多,代码较长,那么Option Explicit选项和Dim语句声明变量,可以极大地减小输入错误,能更方便的找出代码出问题的地方。
试想,如果不用Option Explicit选项,编写一个DLL库连接,为了找到一个变量拼写错误就会让人抓狂的。
而Dim声明变量,在写代码的同时,通过自动更改字母大小写,就会不断地提醒变量名正确与否,好处多多。
从这一角度而言,我是非常不喜欢全部变量都只用小写的(法师好像就是这个习惯),对于坛子里a、b、d单字母变量满天飞的,我只能用痛恨来表达了~~

点评

听专家的!!!  发表于 2014-9-17 21:46
同感!  发表于 2013-1-30 13:15

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-30 09:02 | 显示全部楼层
liucqa 发表于 2013-1-30 08:40
考虑到默认变量会有一个初始值,所以如果手误导致输入错误的话,vba在运行的时候很可能不报错,而导致运行结 ...

变量很多情况下需要初始化否则运行结果会出错。

那么,dim 或 redim 语句,在声明变量的同时,就是对变量本身做了一次归零的初始化处理。

然而,更多的情况下,变量初始化以后还需要赋值,
那么,即使没有使用dim 语句,直接给变量赋值,效果是一样的。


因而,变量是否适当地进行了初始化以及初始化赋值,这个是运行结果是否正确的原因,
但和是否使用了dim 语句,没有直接关联。

即,即使使用了dim 语句,也不能保证运行结果正确。(如果没有正确初始化和赋值的话还是会错。)

点评

“dim 或 redim 语句,在声明变量的同时,就是对变量本身做了一次归零的初始化处理” 我记得我在“十点半”的代码中就使用过redim进行过变量的定向清除或者是初始化的……好像是在循环内部,每一次循环要重新赋值…  发表于 2014-9-17 21:51
我说的是保留Option Explicit  发表于 2013-1-30 12:16

评分

2

查看全部评分

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-18 16:21 , Processed in 0.042424 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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