玩游戏的笔记本电脑脑玩游戏总会卡一下。不管是什么游戏,都会卡一下

面向VBA初学者→ VBA代码中有关【变量】的误区
我的图书馆
面向VBA初学者→ VBA代码中有关【变量】的误区
&经常有VBA初学者,发帖求助定义变量时产生的疑问。甚至有些初学者被搞得很困惑……但我要说,这些都是完全可以避免的。对于初学者来说,没有任何必要去学习定义变量以及变量类型的完整知识。太奢侈了! 太浪费时间了! 太损伤脑细胞了!完全剥脱了初学者的乐趣。本帖的宗旨,就是希望所有VBA爱好者,起来革命,彻底打倒学术权霸的形成的错误概念 → 【定义变量和定义变量类型是个好习惯】…………华丽的分割线…………以上为
发帖内容(未修改一字)…………本帖发出后已经有一个月了,因为引起了很大的争议,所以在一个月之后的3月4日,追加几句话,作为内容的补充和态度的修正:本帖主旨其实还是这个意思:1、 初学者不必马上去学习定义变量的各种知识,直接写代码照样可以入门。2、 入门以后再学习定义变量的方法,并根据自己的认识取舍即可。没必要上纲上线地把不定义变量说成是十恶不赦的坏习惯。3. 作为职业编程者,或者虽然不是职业编程者,但你的编程工作代码会有其他相关人员参与时,定义变量并作必要的注释是个好习惯。→ 【其实我认为这一点根本不用说,难道真有每天为公司和团队工作写代码但从不定义变量的人存在么?】补充结束。
第一个误区:Option Explicit如果任何模块最顶端出现这一句代码,请立即给予删除。它不能带来任何好处,反而给初学者带来伤害。简要介绍 Option Explicit 的作用【强制声明变量】带来的后果,如果代码编写过程中需要使用一个新的变量,那么对不起,编译程序会拒绝你这样做。因此,它给初学者带来的坏处就是失去了自由……你必须先定义变量,然后才能使用它。而删除这一句代码的好处就是,你可以在任意阶段,自由地使用任何变量。差别:使用和不使用Option Explicit,对程序的实际使用没有任何影响。既然实际使用没有差别,为什么还要用这句Option Explicit代码呢? 除非脑袋被驴踢了!补充解释Option Explicit的真正意图在电脑286、386时代,在DOS程序代码时代,在内存仅16M,32M时代,你必须定义好每一个变量的数据类型,以便最高效地进行内存使用。即,一个口袋里只有10元钱的人,要生活一周 → 于是你必须精打细算好每一分钱,否则就会饿死。…………Option Explicit 的作用,就在于:如果你的程序没有做到精确定义每一个变量的数据类型,编译程序就会拒绝执行→它认为你太奢侈了,不懂的节约使用每一分钱。…………那么,现在我为什么提倡完全、彻底删除Option Explicit这一句,永远不要理会它呢?因为现在的电脑硬件环境,已经是过去的几千倍了。每一个人口袋里都有几百万的钱,还有必要去考虑一分钱、一元钱的用法么?第2个误区 dim 所有变量前面已经解释过了,实际上,不对任何变量进行dim 定义而直接使用,对代码的运行没有任何影响。既然如此,还有必要去dim 每一个变量么?dim arrdim txtdim Num这样的一些语句,完全是多余的,没有任何实际意义。补充解释:dim arr 等价于 dim arr As Variantdim txt 等价于 dim txt As Variantdim Num 等价于 dim Num As Variant而变量类型,默认就是任意变量Variant类型,因此这样的代码写上去完全就是多余的,是脱裤子放屁多此一举。dim txtdim Num下面简要介绍变量数据类型:常用的有Variant 即任意变量,因此完全不需要dim其次,对于数值有 'byte 1 byte(0-255) 2^8'%=integer 2 byte (-2^15 to 32,767) 2^16/2'&=long 4 byte (-2^31 to 2,147,483,647) 2^32/2 ?2.147E9'@=currency 8 byte(-922,337,203,685,477.5808 to 922,337,203,685,477.5807. ) 2^64/2=9.22E18/10^4'!=single 4 byte(-3. to -1. ) (1. to 3.)'#=double 8 byte(-1.31E308 to -4.47E-324)(4.47E-324 to 1.32E308 )以及字符串变量'$=string (2^31) variable-length characters or 64K (2^16) fixed length characters初学者可以一带而过,不需要去看具体的内容。总而言之,言而总之,不同的数据类型,占用大小不同的字节,因此计算时对内存的占用和运算效率有所不同。因此,定义变量数据类型以后,可能的好处是少占用一些内存以及大量重复运算是提高计算速度。但是,相应的缺点是,由于各种类型占用字节的限制,它所能代表的数值范围受到了限制!因此,如果初学者试图去使用定义变量类型的方法时,往往尚未得到实际好处,即【运算速度提高】的好处(但实际运算量小时速度的差别很小、很小可以完全忽略不计)却首先受到了因为不能恰如其份地定义好变量类型,而造成了变量溢出或冲突导致代码无法运行的严重后果!
以上简单地介绍,希望大家明白以下道理:1. VBA编程完全不需要定义变量和定义变量的数据类型就可以顺利运行。→ 结论: 初学者不需要去定义变量和定义变量类型2. 仅在大型程序、超大量数据运算、巨量次数反复循环计算等场合,定义变量类型有提高计算效率的好处。→ 结论: 初学者尚不需要,可以暂时不学习3. 随着VBA编程经历的增长,任何人都可以慢慢地、自然地学会自由地、随心所欲地定义变量以及定义变量类型→ 结论: 初学者今后也能学习到定义变量和变量类型的技巧,完全不需要在初学阶段去死记硬背因此,建议初学者忽视任何老师关于学习VBA时应该学习定义变量类型,或者定义变量类型是一个编程好习惯的荒唐说法。实事求是地说,对于普通VBA宏代码运用来说,定义变量类型的好处并不重要,基本上可以完全忽略。我并不反对中级以上能力的在编写代码时定义变量以及变量类型。但是,我的观点,对于初学者来说,完全不必要去讲述变量类型的相关知识。只要像我做的这样,做一个简单描述就可以了。一句话:定义变量类型可以节省数据占用的内存而提高计算速度,但对于一般计算程序来说影响微小可以不予考虑。
发这个帖子的原因,在于前几天,有一个初学者提出疑问:【顺便提问:所有的书包括本论坛都说要定义变量,好处n条。这个和您说的似乎不太一致啊?难道是不定义更好?】…………显然,还有很多已经入门,甚至正在做VBA老师的人,根本就不懂的dim 语句的作用,在那里误导初学者。必须让所有人都醒悟过来:dim 语句可以有,但并非必要。
馆藏&19500
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&查看: 57111|回复: 447
面向VBA初学者→ VBA代码中有关【变量】的误区
阅读权限95
在线时间 小时
本帖最后由 香川群子 于
17:06 编辑
经常有VBA初学者,发帖求助定义变量时产生的疑问。
甚至有些初学者被搞得很困惑……
但我要说,这些都是完全可以避免的。
对于初学者来说,没有任何必要去学习定义变量以及变量类型的完整知识。
太奢侈了! 太浪费时间了! 太损伤脑细胞了!
完全剥脱了初学者的乐趣。
本帖的宗旨,就是希望所有VBA爱好者,起来革命,
彻底打倒学术权霸的形成的错误概念 → 【定义变量和定义变量类型是个好习惯】
…………华丽的分割线…………以上为
发帖内容(未修改一字)…………
本帖发出后已经有一个月了,因为引起了很大的争议,
所以在一个月之后的3月4日,追加几句话,作为内容的补充和态度的修正:
本帖主旨其实还是这个意思:
1、 初学者不必马上去学习定义变量的各种知识,直接写代码照样可以入门。
2、 入门以后再学习定义变量的方法,并根据自己的认识取舍即可。
没必要上纲上线地把不定义变量说成是十恶不赦的坏习惯。
3.&&作为职业编程者,或者虽然不是职业编程者,但你的编程工作代码会有其他相关人员参与时,
& &&&定义变量并作必要的注释是个好习惯。
& &→ 【其实我认为这一点根本不用说,难道真有每天为公司和团队工作写代码但从不定义变量的人存在么?】
补充结束。
………………
知识树索引:此贴不宜入知识树,保留处理。&
值得肯定,我就是那种不爱定义变量的人&
有探讨价值的新观点,值得鼓励,加精。&
我就是那种不爱定义变量的人
我很赞同,定义变量是科班高级程序员,大型.
阅读权限95
在线时间 小时
第一个误区:
Option Explicit
如果任何模块最顶端出现这一句代码,请立即给予删除。
它不能带来任何好处,反而给初学者带来伤害。
简要介绍 Option Explicit 的作用
【强制声明变量】
带来的后果,如果代码编写过程中需要使用一个新的变量,那么对不起,编译程序会拒绝你这样做。
因此,它给初学者带来的坏处就是失去了自由……你必须先定义变量,然后才能使用它。
而删除这一句代码的好处就是,你可以在任意阶段,自由地使用任何变量。
使用和不使用Option Explicit,对程序的实际使用没有任何影响。
既然实际使用没有差别,为什么还要用这句Option Explicit代码呢? 除非脑袋被驴踢了!
原来尚有此等激烈的交锋,好好好,碰撞的都是智慧的火花!&
你懂了可以说不管,不懂的怎么可能不管,你让他如何继续?编程不是写文章,可以有错别字。&
http://club.excelhome.net/thread--1.html
南宫飘雪关于变量的说明,值得新手看看&
我要说的都在91楼了,不想被耽误的童鞋们,去看看吧。&
Option Explicit +Dim 是防止手误的唯一办法&
当你调试的时候找不到错误原因 就知道这句话.
阅读权限30
在线时间 小时
香川群子 发表于
第一个误区:
Option Explicit
先前的学习一般来说不要求学员定义变量类型,但也不可否认,定义变量的类型有很多好处
阅读权限95
在线时间 小时
补充解释Option Explicit的真正意图
在电脑286、386时代,在DOS程序代码时代,在内存仅16M,32M时代,
你必须定义好每一个变量的数据类型,以便最高效地进行内存使用。
即,一个口袋里只有10元钱的人,要生活一周 → 于是你必须精打细算好每一分钱,否则就会饿死。
Option Explicit 的作用,就在于:
如果你的程序没有做到精确定义每一个变量的数据类型,
编译程序就会拒绝执行→它认为你太奢侈了,不懂的节约使用每一分钱。
那么,现在我为什么提倡完全、彻底删除Option Explicit这一句,永远不要理会它呢?
因为现在的电脑硬件环境,已经是过去的几千倍了。
每一个人口袋里都有几百万的钱,还有必要去考虑一分钱、一元钱的用法么?
看来现在可以土豪一下了……呵呵&
阅读权限95
在线时间 小时
第2个误区 dim 所有变量
前面已经解释过了,实际上,不对任何变量进行dim 定义而直接使用,对代码的运行没有任何影响。
既然如此,还有必要去dim 每一个变量么?
这样的一些语句,完全是多余的,没有任何实际意义。
阅读权限95
在线时间 小时
补充解释:
dim arr&&等价于 dim arr As Variant
dim txt&&等价于 dim txt As Variant
dim Num&&等价于 dim Num As Variant
而变量类型,默认就是任意变量Variant类型,
因此这样的代码写上去完全就是多余的,是脱裤子放屁多此一举。
阅读权限95
在线时间 小时
下面简要介绍变量数据类型:
常用的有Variant 即任意变量,因此完全不需要dim
其次,对于数值有
'byte& && && && &1 byte(0-255) 2^8
'%=integer& &2 byte (-2^15 to 32,767) 2^16/2
'&=long& && &&&4 byte (-2^31 to 2,147,483,647) 2^32/2 &#E9
'@=currency 8 byte(-922,337,203,685,477.5808 to 922,337,203,685,477.5807. ) 2^64/2=9.22E18/10^4
'!=single& && & 4 byte(-3. to -1. ) (1. to 3.)
'#=double& & 8 byte(-1.31E308 to -4.47E-324)(4.47E-324 to 1.32E308 )
以及字符串变量
'$=string& && &(2^31) variable-length characters or 64K (2^16) fixed length characters
初学者可以一带而过,不需要去看具体的内容。
总而言之,言而总之,
不同的数据类型,占用大小不同的字节,因此计算时对内存的占用和运算效率有所不同。
因此,定义变量数据类型以后,可能的好处是少占用一些内存以及大量重复运算是提高计算速度。
但是,相应的缺点是,由于各种类型占用字节的限制,它所能代表的数值范围受到了限制!
因此,如果初学者试图去使用定义变量类型的方法时,往往尚未得到实际好处,
即【运算速度提高】的好处(但实际运算量小时速度的差别很小、很小可以完全忽略不计)
却首先受到了因为不能恰如其份地定义好变量类型,而造成了变量溢出或冲突导致代码无法运行的严重后果!
阅读权限95
在线时间 小时
以上简单地介绍,希望大家明白以下道理:
1. VBA编程完全不需要定义变量和定义变量的数据类型就可以顺利运行。
&&→ 结论: 初学者不需要去定义变量和定义变量类型
2. 仅在大型程序、超大量数据运算、巨量次数反复循环计算等场合,定义变量类型有提高计算效率的好处。
&&→ 结论: 初学者尚不需要,可以暂时不学习
3. 随着VBA编程经历的增长,任何人都可以慢慢地、自然地学会自由地、随心所欲地定义变量以及定义变量类型
&&→ 结论: 初学者今后也能学习到定义变量和变量类型的技巧,完全不需要在初学阶段去死记硬背
因此,建议初学者忽视任何老师关于学习VBA时应该学习定义变量类型,或者定义变量类型是一个编程好习惯的荒唐说法。
看来阅读一段陌生的代码确实很是伤脑筋的……尤其是没有注释,且没有遵守通常的约定的习惯时……&
同意liucqa,变量的命名、程序的结构一定要养成好的习惯和风格。除非是故意的。&
第三点严重错误:变量名不能随心所欲!正确的定义变量名可以让其他人迅速看懂你的程序。而这一点在团队合作中甚至比编程无bug还重要!!!!!&
我也是从不定义的,反正都是小程序&
阅读权限95
在线时间 小时
xiaofx11 发表于
先前的学习一般来说不要求学员定义变量类型,但也不可否认,定义变量的类型有很多好处
实事求是地说,对于普通VBA宏代码运用来说,
定义变量类型的好处并不重要,基本上可以完全忽略。
我并不反对中级以上能力的在编写代码时定义变量以及变量类型。
但是,我的观点,对于初学者来说,完全不必要去讲述变量类型的相关知识。
只要像我做的这样,做一个简单描述就可以了。
定义变量类型可以节省数据占用的内存而提高计算速度,但对于一般计算程序来说影响微小可以不予考虑。
阅读权限95
在线时间 小时
发这个帖子的原因,在于前几天,有一个初学者提出疑问:
【顺便提问:所有的书包括本论坛都说要定义变量,好处n条。这个和您说的似乎不太一致啊?难道是不定义更好?】
显然,还有很多已经入门,甚至正在做VBA老师的人,根本就不懂的dim 语句的作用,
在那里误导初学者。
必须让所有人都醒悟过来:
dim 语句可以有,但并非必要。
Dim+规范的变量命名规范,是迅速看懂他人程序的前提。&
Dim语句最大的作用是方便其他人能看懂程序,这一点无论对初学者还是老鸟来说,都十分重要。你不能指望别人从初学者那乱七八糟的代码中慢慢找变量在哪里(如果你还希望别人愿意看初学者的程序并给予帮助的话)&
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师查看: 6181|回复: 4
在VBA中如何声明公共变量
阅读权限20
在线时间 小时
如下一个DBName的公共变量,每个Private sub都要调用到这个DBName,如何声明公共变量,不需要每一个SUB中都在声明一次。谢谢!
Dim DBName As String
DBName = Sheets(&Test&).Range(&a6&).Value
阅读权限100
在线时间 小时
& & & & & & & &
Public DBName As String复制代码把这句代码放在最上面。
阅读权限20
在线时间 小时
把两段代码都放最上面,但系统提示,无效外部过程。
难道只能放一句声明变量吗,如果这样,那个公共变量的值在哪赋值。
阅读权限95
在线时间 小时
就你的问题,定义变量在模块顶部,对变量的赋值不能在声明区,可以放在任何过程里
建议楼主先看看编程的基础知识
阅读权限90
在线时间 小时
插入一张模块表,把公共变量声明在模块表的最上面。
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师

我要回帖

更多关于 笔记本电脑玩游戏 的文章

 

随机推荐