本帖最后由 佛山小老鼠 于 2015-10-5 10:07 编辑
佛山小老鼠带您走进VBA数组(菜鸟请进) (此帖2013年11月17日零晨2点50分结帖)
一、前言 1.大家晚上好,快零晨了,写本帖的目的是为帮助那些VBA长久不能入门的朋友而苦脑的,如果你是久久不能入门的朋友,往往是在VBA数组这里卡住了,好好的一起来交流学习VBA数组,当然我先申明,我也只会二维数组,三维数组我也不会,高手就飘过,当然欢迎高手露二手.
2.先说说我学习VBA过程
(1)初识VBA阶段
目前我自己对自己的VBA水平打了一个等级,算一个中级用户吧,把自己走过来这一段聊聊,同学们记住,不能说我“八”和“二”我把自己从2009年到现在学习VBA的过程说一下。我是EH第一个VBA班的学生,当时讲师是叶枫老师,也就是“别怕,excel VBA 其实很简单”的作者,打心里话,从零基础到现在VBA中级用户,而我也是一个非计算机专业,且我学的专业是体育,包括现在我都不专业,经常说的一些术语都不对,如果没有EH这样平台和EH会员及管理的陪伴,我想不可能达到VBA中级水平,中间也放弃过好多次,不学VBA了,说真的,我这里建议大家多分享,俗话说的好:“我为人人,人人为我”,是因为一些老会员把自己的经验分享给我们新手,所以我们新手才有学习资料,才能不断的提高。记得哦,有时间,在EH这个平台多写写帖,这也是你的Excel人生的一个里程碑,同时在写的过程中,其实你对自己这些知识点一个总结,无形中提升自己,当我们80岁时,看回过头来看看,也是一种荣誉啊.如果个个不分享就没有今天的EH.强烈建议大家有空分享一些文章.当时EH培训开班我记得是2010年3月份,那时真的很激动,特别是报名合格那一刻.兴奋啊!,拉拉拉拉……,我可以学VBA了!,课件是以视频的形式发下来的,视频只能播放5次,自己很珍惜,看了一次又看了一次,每一次都是很认真的。总共是四节课,后来就毕业了。虽然自己毕业之后没有入门,但是与自己之前没有参入培训是提高了好多,也明白了录制宏,也明白录制宏里相对和绝对,也理解代码写在那里,更高兴就是“高亮显示行”,虽然当时不懂,但也明白是工作表事件触发了代码运行。
(2)纠结阶段
我当时学习方法是这样的,闲时就到论坛找找一些入门帖下载,然后有空时自学,当然好多看不懂,虽然看不懂,当时还是会去看的,因为看了至少让我不明白又少了一些,再有就是到QQ群里看别人的提问与回答.有时自己也会回复一下别的的VBA提问,如果答对了,别人送给你一个"竖起的大拇指",心里是很爽的,不错不错,更加增强自己学习VBA的信心和兴趣,简单一些对象,属性,方法还是能理解了,可是当看到别写的长长的代码中有arr1,arr2,Ubound(arr1,1),Ubound(arr1,2),redim arr1(1 to 10000,1 to x), ReDim Preserve arr1(1 To 10000, 1 To y),arr1 = Range("A1").CurrentRegion,arr1 = Range("A1").CurrentRegion.Offset(2),我的妈,这些是些什么,我录制宏时怎么都没有见过.后来别人说是数组里知识.我就到图书馆去找这方面的VBA的书,可是市面上本来VBA方面的书少,且有的书提过VBA数组,也是篇幅有限,写的不详细,对手我这样菜鸟,也只能望“书”兴叹了,后来在论坛上找到了这几个帖,建议新手下载学习一下
这些贴对我帮助很大,理解VBA基础和VBA数组,可是当时我对VBA数组还是不懂,在2011年6月放弃了学VBA,因为学不会VBA数组,差不多半年也没有学习VBA了,认为自己学会VBA数组了,到了2012年春节,由于时间比较多,不过对excel一直都有激情,不学VBA并不影响我对excel学习,我就开发"完美工具箱了"
也许你不知道当时我在完美工具箱写的源代码,你看了一定会笑,为什么呢?因为我大部程序都是读取对象完成的,所以早期许多版本一些程序运行会excel程序假死,有目标才有动力,我也明白是因为我不会VBA数组的原因,许多代码可以优化.于是我下定决心,再学VBA数组,这次学VBA数组终于开窍了,大家打起精神,要打起十二分的精神,我把学会VBA数组秘密告诉大家"在本地窗口查看数组的空间结构",方法:Alt+F11==>视图菜单==>本地窗口. 在"本地窗口查看数组的空间结构"和其它变量的变化情况就像我们在学工作表数组函数通过F9查看各函数的结果一样.大家都知道在函数数组,一定要学会按F9查看结果,说的土一点,如果你不会用F9查看数组函数的运算结果,我想你很理解数组函数,同学们,我说的对不对?
(3)进阶阶段
第一:用VBA数组来解决自己用的工作簿和工作表上的问题,这样提升会更一点,这样可以增加你这VBA数组的兴趣
第二:多看看别人写的代码,别人为什么这样写,这样写的好处
第三:多动手写
第四:学会自己给代码找错误,多次调试代码 遇到错误许多朋友,马上想到请教别人,或者发贴到论坛上求助,大仙,大神救救我,急用,这一段代码报错了,不知为什么?帮帮忙,其实我也是这样认为的,代码有问题,按F5运行,F9设置断点,F8逐步运行,再加上打开本地窗口看变量和数组的空间结构,相信错误一定会查个水落石出.如果是别人帮了你弄好,我想下次你遇到,有可能你还是会犯这样的错误,如果你是自己找到错语所在,我想你一定会永远记住它.举个例子,同学们不准笑,要严肃一点 第一个有错误的代码
Option Explicit
Sub test()
Call 自已
End Sub
Sub 自己()
msbgox "亲:您好!", 64, "问候"
End Sub
我运行第一个过程,想调用第二个过程,为什么不对?我想啊想,我想啊想,怎么想不明白?想明的同学们告诉我错在那里,我定给你加财富10¥
第二个错误
是一个自定义函数,大家找出错误我也加财富10¥
Option Explicit
Function XFD1(Rg As Range) '这个函数作用就是返回参数单元格的行号
XFD1 = Rg.Row
End Function
第三个错误
Option Explicit
Sub 取左边的第一个数据再求和()
Dim a%, b%, c%, s%
a = 11
b = 21
c = 31
s = Left(a, 1) + Left(b, 1) + Left(c, 1)
MsgBox "求和结果是: " & s
End Sub
为什么结果是123,应该是6
第四个错误
Sub 筛选()
Range("A1:C100").AutoFilter field:=3, Criterial:="佛山小老鼠"
End Sub
上面代码错误在那里,如果错了,怎样修改?
同学位加油啊 ,找到四个错误各加财富10¥,说清楚只加第一个人回答对的。
个人认为,找代码找错误也是非常重要,非常重要。所以建议大家代码有错误先一定要自己深思熟虑之后,确是没有办法,再求助别人,这样更利于搞自己的水平。
欢迎加入QQ交流群2801-7317-4
|