ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-31 13:35 | 显示全部楼层
本帖最后由 liucqa 于 2013-2-2 18:08 编辑

为了不被这个帖子误人子弟,我简单说说如何规范的编程:

如果你打算一辈子只写50行以下的程序,就不要看下去了!
如果你的程序只用一次,以后既不会改也不会给别人用,那也不要看下去了!
如果你想一辈子在菜鸟级别里面混日子,嗯,也没必要看下面的内容!

1、为什么要规范化编写代码?
答:为了能够让你在1个月后还能看懂程序;
       为了能让你的同事和接替你工作的人能看懂程序;
       为了能够迅速的发现bug(老手都懂这句话的意思)

2、怎么理解规范化编写代码?
答:就好比大家都是中国人,有人说普通话,有人说山西话。你认为哪个方言能够让全中国的人都迅速听懂?
       嗯,国际通行的编程规范就是普通话!这样你就能理解了吧

3、怎么规范化编写代码?
答:这是一个深奥的课题,你去百度“编码规范”吧。
       简单的要求是这样的(针对VBA)
      1、要有Option Explicit
      2、要有Dim,每个变量一行
      3、依据匈牙利命名法、Pascal命名法、驼峰命名法(自己选择),进行变量、函数名、控件名、模块名的命名;可以加上全局和私有的前缀;尽量不要用缩写;
      4、要有恰当的注释,注意注释不是详解,没必要每行都写。
      5、要有缩进,一般是"4个空格"
      6、不要在一行中写多个语句(推荐,不强制)
      7、... ... 请自行百度吧

4、我为啥要规范化编写代码?
答:为了你能找一个好工作
       为了你不被其他同事和项目主管骂
       为了你能成长为准专业的程序员
       为了你能够换掉菜鸟的帽子,变成老鸟。-----------------------------菜叶是什么颜色,你懂的...

5、我没规范化编写代码程序也工作的不错呀!
答:嗯,你是外行,看我帖子最前面三句话。


最后我要说:
编码规范是国内外几代程序员工作几十年的经验,不是外行能随便打倒滴!!



关于变量声明的讨论  ----  南官飘雪


钱和规范无关,不要那么现实嘛

点评

标记一下,补花!!!  发表于 2014-9-17 22:47

评分

8

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-31 14:32 | 显示全部楼层
chentx 发表于 2013-1-31 12:44
好吧,最后一次回复你,大家都知道吃饭是必需的,吃饭这个行为的构成是:吃什么、怎么吃。吃多了会撑,吃 ...

【如果你的信条是对一些简单的语句学习测试那不用定义变量使学习者专注于要学习的内容,那我完全赞同,但如果你的信条是任何程序开发都不需要定义变量,那就无法苟同了。】


呵呵,这个你放心,肯定不会是【任何程序开发都不需要定义变量】这个意思。这绝对不可能啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-31 15:07 | 显示全部楼层
匈牙利命名法(全)
匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。

匈牙利命名法是由Microsoft的著名开发人员、Excel的主要设计者查尔斯·西蒙尼在他的博士论文中提出来的、
也因为他是匈牙利人,所以把这个命名规则叫做匈牙利命名法来纪念他。
(这也是西方人的命名习惯,以发明人或事件相关人命名。)

匈牙利命名法的主要思想是:
在变量和函数名中加入前缀以增进人们对程序的理解。

结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。


还是那句话,并不是要求所有的读者都要去遵守,但是希望读者作为一个现代的软件开发人员都去遵守它。

点评

你找错资料了,看这里http://www.cnblogs.com/xuxn/archive/2012/05/16/real-hungarian-notation.html  发表于 2013-1-31 15:31

TA的精华主题

TA的得分主题

发表于 2013-1-31 15:21 | 显示全部楼层
有争论才不至于一潭死水!有争论并深究才会发现事物的原理!此贴适合我看。感谢大家精彩的探讨。

点评

我就偷懒借一下您的话表达我现在的想法……不好意思……  发表于 2014-9-17 22:50

TA的精华主题

TA的得分主题

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

歪楼歪楼
也因为他是匈牙利人,所以把这个命名规则叫做匈牙利命名法来纪念他。
(这也是西方人的命名习惯,以发明人或事件相关人命名。)

这又是哪找来的?

俺Wiki到的:

The notation is a reference to Simonyi's nation of origin; Hungarian people's names are "reversed" compared to most other European names; the family name precedes the given name. For example, the anglicized name "Charles Simonyi" in Hungarian was originally "Simonyi Charles" (Simonyi Károly in Hungarian). In the same way the type name precedes the "given name" in Hungarian notation rather than the more natural, to most Europeans, Smalltalk "type last" naming style e.g. aPoint and lastPoint. This latter naming style was most common at Xerox PARC during Simonyi's tenure there.

说得是匈牙利人的名字跟俺们一样是姓在前名在后(难道是匈奴人受咱汉人影响?),而Simonyi所处时期的习惯是把变量类型放在变量名后面。

题外话,匈牙利在欧洲是非常特殊的一个民族,据考证是匈奴人后裔,话说那是被咱老祖先打跑的,都能到欧洲抢块大地盘。


liucqa  你找错资料了,看这里http://www.cnblogs.com/xuxn/archive/2012/05/16/real-hungarian-notation.html  发表于 2013-1-31 15:31


这个博文也不咋地,俺还是比较相信E文的Wiki

Where Systems notation and Apps notation differ is in the purpose of the prefixes.
In Systems Hungarian notation, the prefix encodes the actual data type of the variable.
Apps Hungarian notation strives to encode the logical data type rather than the physical data type; in this way, it gives a hint as to what the variable's purpose is, or what it represents.
。。。。

贴多E文不好,自己查吧~

点评

“奶瓶论坛”!!!!????“一杯牛奶,强健一个民族”!!!呵呵  发表于 2014-9-17 22:51
你在这个奶瓶论坛放E文...?  发表于 2013-1-31 22:42

TA的精华主题

TA的得分主题

发表于 2013-1-31 16:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-31 16:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-31 17:06 | 显示全部楼层
我认为是这样:
    在VBA的配置中有个选项:要求声明变量,如果勾选,在插入模块时会自动插入Option Explicit语句,若不勾选,即便有Option Explicit语句也不会发生作用。
    既然要学VBA,要用VBA,我认为还是要规范化编程(这可是前辈们经验的总结)。
    假如你拿一段规范代码求教时,前辈们能很快地发现问题所在,及时回答帮助你,否则可能不愿意看你的代码(没有那么多的时间和精力)。
    再者说,如果从一开始就没有养成这种习惯的话,当你想进一步提升时,简单的一个问题可能会花费更多的时间。
    建议前辈们发一个如何调试查错的贴,程序出现何种错误,可能的原因及查错方向,这样的话,初学者的进步提升会相当快,好比迷路后找到正确的方向。

点评

程序只认Option Explicit,不会关心是否“勾选”  发表于 2013-1-31 19:45

TA的精华主题

TA的得分主题

发表于 2013-1-31 17:09 | 显示全部楼层
我们初学者鼎力支持香川老师的观点,那此高手们不要再打口水战了,香川老师的观点是正确的,象我们这些没有专业学过VBA,连英语都看不懂的菜乌,根本不理解什么叫Option Explicit,代码都是现成的复制过来,只要能运行就行,先解决眼前的问题,至于怎么提高还是以后的事情,香川老师所讲的就是准对我们这些初学者,它热心地帮助过很多初学者,我们初学者很尊重她。

点评

可能这是问题最初的“源”,“流”太远了……  发表于 2014-9-17 22:53

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-1-31 17:52 | 显示全部楼层
非常同意香川群子的观点,对于初学者本来就没有必要这么多限制,只有随心所欲的乱写一通才爽,才有可能突破限制。随着写代码的水平越来越高,才会创新出新的算法,书写慢慢形成自已的规范,不存在自已看不懂的问题。

反倒是什么都按标准,那只是限制编程人员创造能力。。。。。。


注:咱写的代码就是很乱的那种





点评

唉!你好歹也是技术板块的版主呀,要注意影响...  发表于 2013-2-1 15:28
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 12:39 , Processed in 0.043623 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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