ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-2 09:58 | 显示全部楼层
本帖最后由 lu_zhao_long 于 2013-6-2 10:03 编辑

楼主没有明确回答我的问题:何为初学者、进阶者和高手?何为菜鸟和老鸟(还有中间级别的鸟吗)?

但是,从楼主的两个回帖中我可以看出,楼主所谓的 初学者 = 新手。或者说,刚学基本的顺序、循环和分支 知识的人,可以这样理解吗,楼主?{:soso_e132:}
如果是这样的话,那大家就没有必要争辩了。因为刚学这些基础知识的人确实有难度,适当降低要求也没有多大关系!

不过,从楼主两个回帖中我还可以看出,楼主认为 “Range 属性本来就需要明确定义的”。对于新手或者初学者来说,你们又如何看待这句话呢?楼主还说,对于 Range 的常用属性,那是必须要记住的。那你们就让楼主列出这些常用属性,然后背背看试试!反正我记不住!{:soso_e100:}

既然在 Excel 中用 VBA ,那就是要对最基本的 Range 进行操作的。这句话不会被否定吧?!{:soso_e132:} 否则学 VBA 编程不对基本的单元格进行操作的话,那在 Excel 中学 VBA 做什么呢?{:soso_e132:}

那我想借此对所谓的新手或初学者呼吁一下:
1. 如果你们是刚学编程基础知识的人,则楼主的“不显示声明变量类型”的观点是可以接受的;
2. 如果你们想对 最基本的 Range 进行操作的话,则楼主又说 “一般说 Range属性本来就需要明确定义的”,因为“需要明确定义变量类型时,应该定义变量以及定义变量类型”。你们应该知道怎么办了吧?!你们知道该在什么时候切换了吧?!{:soso_e100:}
3. 至于楼主所说的 set rng = Selection ,建议新手或者初学者,尽量少用或不用 Select 方法 和 Selection 属性,很容易出错。特别是在你们想切换工作表的时候。

再补充一下我个人的情况,否则楼主又要指责我(实际上楼主也并不知道我的实际情况,就匆匆下结论了,这样做老师可不好{:soso_e113:})
“你的错误之处就在于不知道实际情况:
实际上新手往往不需要使用那么多的属性。”

我,一个化工工程师,大学毕业整 20年。现在公司做工艺自动化方面的工作,简而言之就是 PLC、DCS 编程和维护工作的(这与高级编程语言完全不同)。在大学里学的是 Fortran77 语言,后来自学了 GWBasic,QBasic,Pascal,C语言,FoxBase 和汇编语言。注:这些编程语言都是在 DOS 操作系统下的。可以这么说,我所学会的就是基本的 顺序、循环 和 分支 知识。
到了 Windows 时代,我无法适应新的编程环境,或者说面向对象的编程概念。因为在 DOS 时代,所有的输入输出结果都是完全要自己来处理的。比如说,在 DOS (包括Windows98)下,我可以通过 INT13 中断对磁盘直接进行读写操作。但是在 Windows 下这些已经不允许了,必须通过对 Object 的属性和方法来进行操作。所以,我一直不能适应!这就是我为什么认为自己还是一个初学者的缘故!

在 Excel 中使用 VBA 是我第一次接触面向对象的编程环境。其它高级编程语言全不会。我并不想成为专业的编程人士,只想将工作中日复一日的重复而枯燥的 Excel 工作表的操作让 VBA 来帮我完成而已。所以我在 VBA 编程的时候还是要运用各个 Object 属性和方法的,当然对我来说还是有点困难的!所以,顺便问一句,楼主认为我是新手还是老手?初学者还是进阶者(高手肯定算不上了)?{:soso_e132:}

再说一下我的观点吧。我是一个“骑墙”派:
1. 对于简单的 VBA 代码,就是基本的类似于 A = B + C 之类的,不显示声明变量也无可厚非,前提是不要对 Object 的属性或方法进行操作;
2. 对于对 Object 的属性和方法进行操作的话,你也可以不用显示声明变量,前提是你能够记住 Object 的各个属性和方法,且不会手误;如果你的记性像我一样不是太好的话(可能是我年纪有点大了,35岁以后记性越来越差),最好还是显示声明一下变量类型会更好;
3. 前面两条都是针对“单干”的人员。如果你所面对的是一个合作环境的话,则最好是显示声明变量类型。否则别人在调用你的程序时候实参和形参不一致的话会出错,给别人调试程序带来困难;
4. 如果一个人有时使用变量的显示声明,有时又不声明。火候一定要把握得好!这个才比较难啦!当然,如果保持一个统一的习惯应该会更好!

那各位 VBA 的爱好者们,你们还要继续支持楼主的 “本帖的宗旨,就是希望所有VBA爱好者,起来革命,
彻底打倒学术权霸的形成的错误概念 → 【定义变量和定义变量类型是个好习惯】”的观点吗?

我还是那句话,如果楼主不使用“所有VBA爱好者,起来革命,彻底打倒学术权霸的形成的错误概念 → 【定义变量和定义变量类型是个好习惯】”,楼主的观点还是部分可以接受的。注意,楼主所说的是“所有 VBA 爱好者”,而不是“所有 VBA 新手”,范围太广,当然包括许多跟帖反对者,以及像我这样的“骑墙”派!

师者,所以传道、授业、解惑也!作为授业的老师,可以走极端吗?!

点评

我只能选择学习各家各派有用的经典语句了……  发表于 2014-9-18 23:52

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-2 10:55 | 显示全部楼层
lu_zhao_long 发表于 2013-6-2 09:58
楼主没有明确回答我的问题:何为初学者、进阶者和高手?何为菜鸟和老鸟(还有中间级别的鸟吗)?

但是, ...

用一楼主帖中的追加部分答复您:


…………华丽的分割线…………以上为 2013.01.29 发帖内容(未修改一字)…………

本帖发出后已经有一个月了,因为引起了很大的争议,
所以在一个月之后的3月4日,追加几句话,作为内容的补充和态度的修正:


本帖主旨其实还是这个意思:

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

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

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

3.  作为职业编程者,或者虽然不是职业编程者,但你的编程工作代码会有其他相关人员参与时,
     定义变量并作必要的注释是个好习惯。
   → 【其实我认为这一点根本不用说,难道真有每天为公司和团队工作写代码但从不定义变量的人存在么?】

补充结束。
2013.03.04
………………

点评

还有,你所说的“所有 VBA 爱好者”包括不包括前面几个提反对意见的高手呢?  发表于 2013-6-2 11:14
我不想和楼主讨论哲学问题。只想知道这几个问题的明确答案!知道了以后,我就知道自己是不是应该起来革命了!  发表于 2013-6-2 11:11
恕在下愚钝!这个帖子中看不到楼主明确的答案。楼主能够明确回答我问的几个问题吗? 我想问的几个问题就是: 1. 楼主所说的初学者或新手到底是什么范围内的人群? 2. 楼主觉得我算初学者吗? 这几个问题应该不难   发表于 2013-6-2 11:09

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-2 11:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2013-6-2 10:55
用一楼主帖中的追加部分答复您:

我想问的几个问题就是:
1. 楼主所说的初学者或新手到底是什么范围内的人群?
2. 楼主觉得我算初学者吗?

这几个问题应该不难   发表于 2013-6-2 11:09

^^^^^^
答:
  我并没有资格对某个具体的人的个人认识来做裁决。
  根据你前面的回帖似乎你仍认为你自己是新手或初学者……呵呵,这个我没办法加以干涉。

既然如此,你可以直接无视我以及我的这个帖子。

做你自己想做的就是了。


…………
至于你说你认真地看了回帖,那么你应该能看到,有一些自认为新手、初学者的坛友,发表了赞同或理解我的帖子内容的看法。

因此,我也不算是孤家寡人一个了。呵呵。



点评

一份性格,一份本事,我不在乎性格,我在乎本事!!!支持您及许多人……  发表于 2014-9-18 23:55

TA的精华主题

TA的得分主题

发表于 2013-6-2 21:05 | 显示全部楼层
呵呵,楼主的意见我是同意的,本人先是入门后,根据自已的需要来对变量进行声明的,但是随着学习的深入,觉得声明变量声明十分重要,这个也是习惯问题,如果刚开始逼着自已,其实也是对自已好,呵呵

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-6-2 22:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chuxuezhe haizai mimangzhong

点评

初学者还在迷茫中……还需要翻译呢。  发表于 2013-6-2 23:00

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-2 23:00 | 显示全部楼层
xgy0214dxy 发表于 2013-6-2 21:05
呵呵,楼主的意见我是同意的,本人先是入门后,根据自已的需要来对变量进行声明的,但是随着学习的深入,觉 ...

【入门后,根据自已的需要来对变量进行声明的……】

这样的学习过程也没啥不好啊。

TA的精华主题

TA的得分主题

发表于 2013-6-4 15:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习了,谢谢!

TA的精华主题

TA的得分主题

发表于 2013-6-9 08:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-6-9 20:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个害人的帖子还加精,在2013下不定义变是通过不了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-9 20:44 | 显示全部楼层
EH2003 发表于 2013-6-9 20:37
这个害人的帖子还加精,在2013下不定义变是通过不了。

在2003中如果设置了 option explicit

那么不定义变量也是通不过的。这个你知道的吧?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 20:00 , Processed in 0.034353 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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