ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-8-15 13:30 | 显示全部楼层
我是个初学VBA的学生,个人觉得不管学什么都应该从正确的方式开始学习,虽说使用变量比较繁琐,但对初学都来说无疑是另一个现行的老师,DIM对初学者来讲更加是良师益友,让学生们了解VBA程序的来龙去脉
不管学哪方面的,首先得学那方面的规章制度,再去学它的内容,变量就好比VBA里面的规章制度,告诉学生们按正规的方式编写程序,一旦学生们程序编写错误,它就会出来制止并告诉学生哪个位置不符合
希望初学者都能在学习时按正规的编辑方式去编辑,养成一种良好的习惯,不要贪图一时的简便而使自己陷入VBA程序编写的困惑中

点评

很好,养成严谨的编程习惯  发表于 2013-8-15 15:58

TA的精华主题

TA的得分主题

发表于 2013-8-21 20:59 | 显示全部楼层
受益匪浅,找到适合自己的就是最好的!

TA的精华主题

TA的得分主题

发表于 2013-9-9 21:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
{:soso_e129:};路过,慢慢养成个良好习惯,才比较好吧。

TA的精华主题

TA的得分主题

发表于 2013-9-9 22:39 | 显示全部楼层
我了个区。。今天我才遇见原帖。。。。

辩论的帖子都看了N个了。。。

不过我要说,之前我没声明过变量,看了N多大神的辩论才真的认真声明起来的,,,,,,

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-9 22:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
490483577 发表于 2013-9-9 22:39
我了个区。。今天我才遇见原帖。。。。

辩论的帖子都看了N个了。。。

可喜可贺,你这是水到渠成。

TA的精华主题

TA的得分主题

发表于 2013-9-15 09:51 | 显示全部楼层
对于我这个初学着来说有点看不懂 但是还是坚决收藏起来  备用

TA的精华主题

TA的得分主题

发表于 2013-9-24 22:29 | 显示全部楼层
非专业人士一般只在实际工作中要编写很少的一段代码来解决问题,从这个角度而言,支持楼主观点。

TA的精华主题

TA的得分主题

发表于 2013-9-25 00:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
现在看来,声明还是相对比较重要的。
以下是几乎相同的两段,效果:在选择区域内,每一个数字除以10。
可以分别执行试一下,这就是是否声明的一点区别。
  1. Sub 除以10()
  2. Dim cell As Range
  3. On Error Resume Next
  4. For Each cell In Selection
  5.     If cell = "" Then
  6.         cell = ""
  7.     Else
  8.         cell = cell.Value / 10
  9.     End If
  10. Next
复制代码
  1. Sub 除以10()
  2. 'Dim cell As Range
  3. On Error Resume Next
  4. For Each cell In Selection
  5.     If cell = "" Then
  6.         cell = ""
  7.     Else
  8.         cell = cell.Value / 10
  9.     End If
  10. Next
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-25 00:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cleverzhzhf 发表于 2013-9-25 00:19
现在看来,声明还是相对比较重要的。
以下是几乎相同的两段,效果:在选择区域内,每一个数字除以10。
可 ...


不要使用For……Each循环,使用For……Next循环就没事了。


你的问题,说明你不熟悉For……Each循环的特点。

本质上大部分情况下声明变量不是必须的。


点评

你说的这些东西,是个程序员都知道。但没有人会像你这样执着的到处喊。你喊完了,很难说你是在帮助新手还是在坑害新手。  发表于 2013-9-25 00:59
你还是没理解你这个帖子的问题:通常如果一件事情有50%正面作用,同时又有50%的负面作用,聪明人都会默不作声不提这事的,因为你不知道提出来之后,是正面作用占上风还是负面占上风。  发表于 2013-9-25 00:58

TA的精华主题

TA的得分主题

发表于 2013-9-25 07:51 | 显示全部楼层
香川群子 发表于 2013-9-25 00:48
不要使用For……Each循环,使用For……Next循环就没事了。

换言之,不声明变量的数据类型,For Next循和For Each...Next循环两大常用的循环语句只能其中一个,否则有50%的出错机率。而声明一下数据类型,则不再受限制,任可循环语句都可用。

循环语句都会写的人,不可能连“单元格类别名称是Range”也不知道吧? 不可能连“As Range”也很难吧?
学习“ as Range”的难度远远小于循环语句。因此说“声明数据类型或对象类型很难,因此不用声明,直接使用用变量就行了”的说法是不成立的。
又简单,又能让你的代码提速,还减少你的代码出错的机率,何乐而不为呢?

我就不信一个循环语句、条件语句都会用的人会认为“Aa Range” 或者“As Long”是多难的事!

点评

呵呵,被喷了吧,别在这个帖子上费劲了,有没有开源的工具推荐一下,俺好放到知识树里面  发表于 2013-9-25 11:00
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 15:21 , Processed in 0.034547 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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