ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
一招顶“一万招”的懒人技巧 Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
楼主: ggsmart

菜鸟谈VBA最最基础入门《原创》

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-8-30 18:09 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
楼主太强了,看完收益匪浅!thanks a lot!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-30 18:12 | 显示全部楼层
原帖由 宝贝有酒窝 于 2009-8-30 15:51 发表
我的作业
原本是想在利用字段调用子表合并到汇总表中的但是目前的技术实现不了
另外绿色底纹被我覆盖了……


底纹我只是给来作标记的,盖了没事。如果想不覆盖底纹,可以使用选择性粘贴或直接等于Value,都可以的。
对于你的代码,能实现需要得到的结果,但可以再完善一下。比如,其实程序中并不需要定义那么多的变量,也不用使用两层循环。这样只会让程序进行许多多余的计算,增加程序执行的时间。
楼上的jiminyanyan 朋友已经给你修改了一下,可以参考一下,但他在修改时,可能不小心把“为第三列(性别)添加数据的代码”删到了。我按照你的思路,把代码整理了一下(几乎和楼上的一样),供参考。
虽然我说了,只需要完成目的即可,但你你也可以看一下程序执行的时间,对比一下两次代码的区别,同样的思路,甚至是同样的语句,整理过的效率可是你原来的效率的七倍以上哦。
(回复)宝贝有酒窝的学生花名册汇总.rar (23.92 KB, 下载次数: 3952)

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-30 18:14 | 显示全部楼层
原帖由 moon2778 于 2009-8-30 10:46 发表
有需求就有市场是不是? 我想学数组和类,诶。。。。


那下一贴就讲一讲数组吧。这段时间刚开学,需要做的事情好多,所以会慢点。
不过,也许还有些朋友没跟上来,当作等一等吧!

TA的精华主题

TA的得分主题

发表于 2009-8-30 22:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-8-30 23:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-8-30 23:39 | 显示全部楼层
人的胸怀多大,能力就多大
走你的录,让别人vba吧!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-31 12:13 | 显示全部楼层
VBA数组(一)

  一、什么是数组
  对于数组,在前面7楼的贴子里我们已经简单介绍了一些简单的概念,如果你忘记了,请回过头去花两分种读一读。
  
  读完了也许你还是不清楚,没关系,请接着往下看。
  
  新学期开始了,我上七(1)班数学,学生太多了,我老是记不住学生的名字,还好班主任为了便于管理,为班上的学生都编了学号,所以上课时点名我习惯性只点学生学号,我说,5号同学请上黑板演示一下你的解题过程,10号同学下课后请替老师把大家的作业收起来……下课后,在办公室,和大家聊天,我更不叫学生名字而直接统称为“七(1)班”。
  待我学习了VBA的数组后,我忽然明白了,这种简化的称呼方式原来就是“数组”。
  这里,我们是把一群学生聚在了一起组成了“七(1)班”(数组名)这个集合,班级里的学生我们通过“学号”(索引号)对其进行区分。上课时,我问:“5号同学是谁?”,一个同学站起来答:“我叫moon2778”,于是,我知道了,“七(1)班”这个数组里的第5个元素就是“moon2778”。用数组来表示就是“七(1)班(5)”,也就是数组名加索引号。好了,当别人果问你:“‘七(1)班(5)’的同学是谁?”时,你一定要知道,是“moon2778”。
  那么,什么是数组,你知道了吧?它有什么特点,我们可以试着简单小结一下:
  1、数组共享一个名字,即数组名;
  2、数组是变量的集合,有多个元素;
  3、数组中的元素按顺序保存在数组中,元素通过索引数字加以区分;
  4、数组是变量。

  
  二、定义数组
  声名数组同声明其他变量的方式一样,唯一不同的是数组有大小,包含多个单个变量。
  初一学生报名入学后开始分班级,领导说,七(1)班分50个学生(确定了班级学生的个数最多只能有50个学生,再多一个都不行,因为没有座位了。),知道有50个学生后,老师拿到学生花名册就开始给学生编学号,建学籍。1号是谁?2号是谁?……50号是谁?
  这就是一个定义数组,并给数组赋值的过程,用语句来表示,可以这样:
  Dim 七(1)班(1 To 50)
  七(1)班(1) = "张三"
  七(1)班(2) = "李四"
  七(1)班(3) = "王王"
  .....
  七(1)班(50) = "赵六"

  这里,我们定义了一个50个元素的一维数组,并分别给数组的元素赋值。当然,这里用的只是一个模拟的语句。如果我们需要定义一个数组arr,存放1到100的整数集合,则代码为:
  

  1.   Sub ggsmart()
  2.     Dim arr(1 To 100) As Integer '声明数组名称及数据类型
  3.     For i = 1 To 100 '循环,为数组的元素赋值
  4.       arr(i) = i
  5.     Next
  6.   End Sub
  7.   
复制代码
  其实“Dim arr(1 To 100) As Integer”我们也可以写成“Dim arr(99) As Integer”,这样,定义的数组同样是100个元素的一维数组,因为如果不指定起始索引号的话,VBA默认从0开始。
  当然,你也是可以通过OPTION BASE 来修改数组默认的起始序号,在模块的第一句写上“OPTION BASE 1”这样,默认的数组起始序号就是1了。
  
  学习累了,恰好第二节课刚下,课间操时间,顺便可以到操场练练。可是,有些同学不认真啊,这不,老师在广播里叫上了:“七年级,(1)班的第五个同学请认真一点,七年级,(2)班的第三个同学注意队形……”
  天了,我惊奇地发现,原来我们生活中有这么多“数组”,可是,你知道上面的这两个同学共享了一个什么名字吗?
  是的,“七年级”就是它们共有的名字。
  新生分班时,校长就说了,550名新生,每班50人,分成11个班,到各个班级里,老师都给学生分了学号(1到50号),11个班级就有11个1号,也有11个50号。晕,一个班的学生名字我都记不住,如果11个班的学生全站在一起,我该怎么称呼?
  我高兴了,还好,我会数组。找到“moon2278”同学,我会说“七年级,1班,5号同学”,哈,难不了我。如果“宝贝有酒窝”同学是初一(9)班的25号,没关系,我也会说“七年级,9班,25号同学”。
  哇,好简单,前面加个班级的序号区分就行了。
  这里,“七年级”实际上是一个由11个一维数组(11个班)组成的二维数组,它的元素的个数是11*50(11个班,每个班级50名学生)个。习惯性,大家会说它是一个11*50的二维数组。
  如果要写成代码,那就是:
  Dim 七年级(1 To 11, 1 To 50)
  七年级(1, 1) = "张三"
  七年级(1, 2) = "李四"
  '......
  七年级(2, 1) = "钱林"
  七年级(2, 50) = "林平"
  '......
  七年级(11, 50) = "周六"
  我们说上面的数组是一个11*50的二维数组,放到表格里就相当于是一个11行50列的数组。
  如果我们想定义一个二维数组,第一列存放1到100的奇数,第二列存放1到100的偶数,代码为:
  

  1.   Sub ggsmart()
  2.     Dim i As Integer, j As Integer
  3.     Dim arr(1 To 50, 1 To 2) As Integer '定义一个50*2的二维数组(50行,2列)
  4.     j = 1       '数组1 to 50的索引号
  5.       For i = 1 To 100 Step 2
  6.           arr(j, 1) = i  '奇数赋值
  7.           arr(j, 2) = i + 1 '偶数赋值
  8.           j = j + 1 '索引号加1
  9.   Next
  10.   [a1:b65536].Clear '清除原有数据
  11.   [a1].Resize(50, 2) = arr '将数组赋值给A1单元格向下50行,向右2列的区域
  12.   End Sub
  13.   
复制代码
   1到100的奇偶数.rar (6.63 KB, 下载次数: 3172)

评分

参与人数 6鲜花 +10 收起 理由
hope9966 + 2 感谢帮助
jyseh2013 + 1 值得肯定
lano + 2 值得肯定
zhee123321 + 2 优秀作品
seki_100 + 2 优秀作品

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-31 12:24 | 显示全部楼层
楼主的强帖很受教。不过其中的附件很分散,能集中一处下载吗,谢谢

TA的精华主题

TA的得分主题

发表于 2009-8-31 13:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-8-31 13:29 | 显示全部楼层
谢谢楼主发这么好的教程!看了之后很受益!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,高效办公专列,每天发车

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

GMT+8, 2021-5-16 17:27 , Processed in 0.075255 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2021 Wooffice Inc.

   

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

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

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