ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Dim与不Dim

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-3-6 17:51 | 显示全部楼层 |阅读模式
我听说过程中的变量应该Dim一下再用,这应该是很有道理的吧,我想问一下,如果只从运行速度上说,Dim过的变量比不Dim的能快多少?我的程序里一般平均每个过程中有10-15个变量,都不曾Dim(高手们别太鄙视啊,我是太业余的了),如果全Dim一下,工程量有点大,不知道运行速度上的提高量能不能给我一点动力啊

TA的精华主题

TA的得分主题

发表于 2013-3-6 17:57 | 显示全部楼层
你不定义类型直接使用变量,会默认是变体类型,占用更多内存。
定义类型速度会提高,具体多少,要看程序的功能。

TA的精华主题

TA的得分主题

发表于 2013-3-6 17:57 | 显示全部楼层
如果你想学好VBA,成为VBA高手,或你要经常使用VBA,或你还要向更高级的语言进军,那么你还是Dim一下吧,Dim有很多好处
最近有两种不同的声音,你可以参考一下:
面向VBA初学者→ VBA代码中有关【变量】的误区
http://club.excelhome.net/thread-977901-1-1.html
关于变量声明的讨论
http://club.excelhome.net/thread-979704-1-1.html

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-3-6 20:50 | 显示全部楼层
本帖最后由 yiyiyicz 于 2013-3-6 20:55 编辑

Dim 用于变量声明。但变量声明不仅仅只是使用Dim
关于能快多少?
如果同一个变量,当声明为Integer类型,肯定比声明为Double快。据说能快100倍
不过在工程计算时,怎么把Double类型变成Integer类型来计算,需要灵活处理

关于变量声明,看来版主的见解也不一样啊
赵版的两个链接,不看也罢。因为没有结论,看了也是一头雾水
等你学到一定程度后,自然会有自己的看法
现在你就听上面两位版主的意见,别偷懒,Dim一下吧


TA的精华主题

TA的得分主题

发表于 2013-3-6 21:31 | 显示全部楼层
个人建议,你可以做两个一样的代码,定义和不定义的使用的失手测测速度就知道了

TA的精华主题

TA的得分主题

发表于 2013-3-6 22:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yiyiyicz 发表于 2013-3-6 20:50
Dim 用于变量声明。但变量声明不仅仅只是使用Dim
关于能快多少?
如果同一个变量,当声明为Integer类型, ...

对于是否Dim我不持态度
我的Excel会自动加一行Option Explicit,但仅对我有约束力,当我上传附件时,会删除它

TA的精华主题

TA的得分主题

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

  在你不能比较清晰的了解变量运行时的相关编译过程之前,如果你仅仅是声明一下变量名,在速度上并不会有什么很大的改善,如果声明的类型不当,可能反而会让你的程序速度运行变慢。
  声明变量的目的不是在于运行速度。不过也不能说因为声明变量不会明显提升速度就永远不用声明。
  影响程序运行速度的主要有但不仅限于下面几个方面:
  一、程序的算法;
  二、过多重复的创建对象、调用类中的属性、使用后期绑定的对象;
  三、在多次重复计算过程中,特别是单条计算语句中的数据类型转换(包含隐性的数据类型转换:即由编译器自动编译的转换);
  四、不当的IF...Else...等逻辑比较语句的使用;
  五、不当的变量类型;
  六、过多的调用API函数,特别是不当的调用;
  ....... 
  送给初学者一句忠告除非是程序的运行时耗难以接受或是已有明确且已经过全方面测试后的代码,否则,不要轻易的去优化你的代码(程序有明确的错误除外)。
  或许,上面这句话,有很多人会不理解。不过,这是我多年编写代码的经验————虽然,我已经有很长的时间没有写代码了。信或不信,在于各人自己,若有疑意,就当我在扯淡吧,呵呵。

点评

是的,优化程序通常都有害无益。除非确实慢得无法接受。  发表于 2013-3-7 20:02

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-3-6 22:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如果只从运行速度上说,Dim过的变量比不Dim的能快多少
实践是检验真理的唯一标准,
自己测试就知道
我就覚得不DIM 好些

TA的精华主题

TA的得分主题

发表于 2013-3-6 22:19 | 显示全部楼层
KCFONG 发表于 2013-3-6 22:13
如果只从运行速度上说,Dim过的变量比不Dim的能快多少
实践是检验真理的唯一标准,
自己测试就知道

“我就覚得不DIM 好些”?不会吧
我没有刻意测试过,但在同taller、wpxxsyzx 两位版主共同开发易用宝时,不仅规定要准确声明变量、数组等的数据类型,即使使用一些字符函数(Mid等),也要加上$以加快速度

TA的精华主题

TA的得分主题

发表于 2013-3-6 22:22 | 显示全部楼层
zhaogang1960 发表于 2013-3-6 22:19
“我就覚得不DIM 好些”?不会吧
我没有刻意测试过,但在同taller、wpxxsyzx 两位版主共同开发易用宝时, ...

正确的使用变量自然速度会有所提,但正确使用是必要条件。否则反而会让程序变得更慢。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-14 10:30 , Processed in 0.045019 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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