菜鸟谈VBA最最基础入门

上传人:ra****d 文档编号:241539430 上传时间:2024-07-02 格式:PPT 页数:112 大小:1.32MB
返回 下载 相关 举报
菜鸟谈VBA最最基础入门_第1页
第1页 / 共112页
菜鸟谈VBA最最基础入门_第2页
第2页 / 共112页
菜鸟谈VBA最最基础入门_第3页
第3页 / 共112页
点击查看更多>>
资源描述
菜鸟谈菜鸟谈VBA最最根底入门最最根底入门?原创原创?如果你是学习如果你是学习Excel的朋友,对的朋友,对VBA这个概念不陌生吧?这个概念不陌生吧?VBA的功能实在太强大,可初学的我们,面对那一串串尤如外星文的代码,你是的功能实在太强大,可初学的我们,面对那一串串尤如外星文的代码,你是不是看得头昏脑胀?想学,是不是却茫然得找不到入口?不是看得头昏脑胀?想学,是不是却茫然得找不到入口?在这里,我把我自己的学习心得和笔记放出来,和大家一起分享交流,一起学习,在这里,我把我自己的学习心得和笔记放出来,和大家一起分享交流,一起学习,共同进步。对了,还要告诉大家,我也是初学者,千万不要把我想成万能的高手,共同进步。对了,还要告诉大家,我也是初学者,千万不要把我想成万能的高手,如果有什么说得不对的,希望大家及时指出。如果有什么说得不对的,希望大家及时指出。开始吧,记住一个共同的目标开始吧,记住一个共同的目标掀开那层神秘的面纱,看看掀开那层神秘的面纱,看看VBA的真实面目。的真实面目。-贴子内容贴子内容-1、为什么要学习、为什么要学习VBA?2、VBA与宏与宏3楼楼)3、VBE简介简介4楼楼)4、对象、属性、方法、事件、对象、属性、方法、事件5楼楼)5、VBA过程过程6楼楼)6、数据类型、变量、数组、常量、数据类型、变量、数组、常量7楼楼)7、回复该定义变量为何种数据类型、回复该定义变量为何种数据类型8楼楼)8、VBA的函数的函数9楼楼)9、程序流程控制、程序流程控制:if语句语句10楼楼)10、程序流程控制:、程序流程控制:SelectCase语句语句11楼楼11、程序流程控制:、程序流程控制:Fornext语句语句13楼楼12、几个、几个fornext循环的例子循环的例子(作者作者:老朽老朽14楼楼)13、程序流程控制:ForEach语句15楼)14、程序流程控制:DoWhile语句16楼)15、程序流程控制:DoUntil语句17楼16、程序流程控制:Goto语句18楼)17、用户窗体(77楼)18、再说Excel的对象模型(110楼)19、小试牛刀制作一个个性化的欢送界面(114楼)20、处理单元格数据(复制、剪切、删除)(171楼)21、Range对象的End属性(带作业)(178楼)什么是VBA?为什么要学习VBA?=VBA是VisualBasicForApplication的简称,具体说来,可能让叶枫三天三夜也说不完,叶枫也只知道VBA是建立在Office中的一种应用程序开发工具,其实知道这也就够了。很懒很笨的叶枫只想吃香喷喷的大米饭,可从没想要知道大米饭是怎么来的。Excel本身的内置函数其实已经很强大了,甚至有人说,只要学会二三十个函数,就已经可以满足普通用户日常的工作需求。那我们为什么要学VBA?是的,如果只需要满足一些普通的工作需求可能永远也不会用到VBA,但在实际应用的过程中,人们的操作却越来越大,需要也越来越高,这时候就需要用VBA来对Excel进行二次开发了,VBA可以有效地自定义和扩展Excel的功能。但有一点叶枫想要告诉大家,VBA功能很强大,但并不是万能的,也并不是所有工作都需要用VBA来解决,也并不是所有工作用VBA来解决都会很简单,这要根据实际情况而定,有些工作你用VBA来解决的话相反会变得很麻烦。1、为什么要学习VBA?刚开始的内容听起来很枯燥,请大家不要分心,耐着性子看下去,兴趣总是慢慢积累的。-1、亲自动手,录制一段属于自己的宏提到VBA,相信很多人想到的就是宏,但是VBA与宏是不是一回事?我觉得它们不是一回事,但这不重要,我们要做的是先来认识一下宏。宏是什么?我理解的宏是一系列固定动作的集合,这个集合当遇到让他执行的条件后就逐个执行。有人把我们录制的宏比喻成一个武术运发动在比赛中练就的一段武术套路动作,这个套路遇到一定的条件比赛就执行。好了,别闲着,动一动你可爱的右手,点点鼠标,翻开一个Excel文件,录制一段宏来来研究研究,步骤如下:1选中任意一个单元格;2翻开菜单工具宏录制新宏,调出宏录制对话框,输入宏名mysub,确定;3设置单元格字体为仿宋体,红色;4点击停止录宏。这样,一个简单的设置单元格格式的宏就录好了。2、VBA与宏2、鼠标点一点,宏给单元格换新装下面我们来执行这段宏。1选中需要设置的任意单元格或单元格区域为了看出效果,单元格最好有字符;2翻开菜单工具宏宏,显示“宏对话框快捷键:Alt+F8;3选择我们刚刚录制的宏,单击“执行。这样我们看到已经为刚刚选中的单元格的字体已被修改成仿宋体,红色。自己动手试着录制几段宏,再执行一下,加深印象。神奇了吧?以后当你再需要一遍又一遍地重复假设干相同的操作的时候,会不会想到让宏来替你做这一切?这是一个不错的奴隶,不用花钱,且不用开工资,赚了吧?好了,收起你贪婪的笑容,继续往下看。宏是什么?现在相信你能想出一千种说法,由你了,又笨又懒的叶枫可没你聪明,也不再多说。上面说的执行宏的过程是不是让你感觉很麻烦?希望用快捷键来控制宏?这个我们可以在录制宏之前在录制宏对话框里进行设置。也可以在录制宏后进行设置,按Alt+F8显示宏对话框,单击“选项,在“宏选项对话框里进行设置-工作表里有宏。-3、寻根问底,找到宏的老窝如果你忘记了,请你再翻开宏录制对话框,在宏名的下面,有一个“保存在的选项,点一点下拉的箭头,我们可以看到,宏可以保存在三种不同的位置,分别是:1当前工作簿系统默认:宏保存在当前工作薄的模块里,只有当该工作薄翻开时,宏才起作用。2新工作簿:新建一个工作薄保存。3个人宏工作簿:这是为宏而设计的一种特殊的具有自动隐藏特性的工作簿,如果你要让某个宏在多个工作簿都能使用,那么就应当创立个人宏工作簿,并将宏保存于其中。上面我们录制的宏是保存在当前工作薄里,今天我们在这里也只介绍保存在当前工作表里有宏。4、拨开层层迷雾,查看庐山真面目宏靠什么来控制Excel的运行?是不是感觉深在浓浓的迷雾里,感觉一头雾水?让我们鼓一鼓劲,拨开它的衣服,开开那家伙里面到底是什么?1按Alt+F8快捷键翻开“宏对话框;2选择我们刚刚录制的宏,点“编辑按钮。眼前一亮吧?这是一个新的天地VBA的编辑器窗口VBE,这个我们以后再说,先将注意力集中到显示的代码上。代码如下:复制内容到剪贴板代码:Submysub()mysubMacro宏由ggsmart录制,时间:2021-2-27WithSelection.Font.Name=仿宋_GB2312.Size=12.Strikethrough=False.Superscript=False.Subscript=False.OutlineFont=False.Shadow=False.Underline=xlUnderlineStyleNone.ColorIndex=xlAutomaticEndWith=3EndSub现在你可能感觉到上面这些乱七八糟的代码会很陌生,甚至在问自己是不是来到外星人的世界,反正叶枫当初是这样感觉的,但不要为此感到害怕,将来我们会慢慢熟悉他,就像闭上眼睛也能准确地将那个又大又红的苹果送到自己的嘴里。5、再进一步,给宏安上门铃一遍一遍地在宏对话框里选择宏名称,按“执行按钮来运行宏的麻烦是不是让你郁闷得有些想吐血?指定快捷键虽然方便,但别人用自己的工作表时能不能快速上手?就算是自己,如果宏多了,或是放的时间长了,你还记得哪个快捷键控制哪个宏?作为excel开发者,一个主要的目标是为自动化提供一个易于操作的界面,“按钮是最常见的界面组成元素之一,我们可以把宏指定给特定的按钮,通过按钮来执行宏,还是用刚刚我们录制的那个宏来举例。通过使用“窗体工具栏,可以为工作簿中的工作表添加按钮。在创立完一个按钮后,可以为它指定宏,然后你的用户就可以通过单击按钮来执行宏。在本练习中,将创立一个按钮,并为它指定一个宏,然后用该按钮来执行宏。具体步骤如下:1翻开菜单视图工具栏窗体,调出窗体工具栏。2单击窗体“工具栏中的“按钮控件,在工作表中希望放置按钮的位置按下鼠标左键,拖动鼠标画出一个按钮,松开鼠标后,Excel会自动显示“指定宏对话框。3从“指定宏对话框中选择“mysub,单击“确定。这样,就把该宏指定给命令按钮。引用:课间休息,插播一段广告:按钮,工作表等这些对象就像是Excel的众多儿女,儿女太多,怎么称呼这群儿女也是一个问题为了不出现叫儿子就七八个一起跑出来,同许多农村父母给儿女起老大,老二,老三的称呼一样,xcel也用这种顺序的起名方法给这些儿女贴上了标签比方第一个按钮是按钮一,再画一个就是按钮二,然后是按钮三,铵钮四等等这样,以后你要叫第三个儿子的时候直接叫按钮三即可如果你嫌这个名字乡下味太浓,如果你嫌这个名字不能很好地反映点击它后会执行怎样的操作不清楚,你可以通过双击按钮外表激活它,可重新为按钮贴上适宜的显示标签需要提醒你的是,这里的标签只是它显示在你面前的样子,实际上它是什么名字?我们可以点击它,看一下名称框里是什么为什么显示出来的是一样,而实际的名字却是另一样呢?也许你现在会感到迷茫,但为什么显示出来的是一样,而实际的名字却是另一样呢?也许你现在会感到迷茫,但不用管它,以后当我们学习了属性后,一切就自然明白了不用管它,以后当我们学习了属性后,一切就自然明白了下面我们来试一试用按钮操作:下面我们来试一试用按钮操作:1选择单元格或单元格区域;选择单元格或单元格区域;2单击按钮。单击按钮。按钮就像装在楼下的门铃,美丽的嫦娥仙子家住在502,猪八戒来到楼下,找准号码502,轻轻一按,“叮咚,叮咚,嫦娥在楼上就给八戒开门了,八戒不用在楼下大声地喊“嫦娥,开门。也不用花两毛钱给嫦娥打个,当然更不用顺着下水管从墙上爬进嫦娥的窗户,方便而实在吧?这种遥控式的命令确实能让繁琐的操作变得简单而方便,让我们获得了一些使用Excel标准命令所不能实现的功能。如果你是八戒,当你熟悉了如何使用这种遥控一样的门铃以后,你可能都回奇怪自己当初在没有门铃的情况下,那段漫长的爬下水管道的日子是怎么熬过来的。让嫦娥仙子开门的方法有很多种,同样执行宏也有多种方法可以选择,我们还可以把宏指定给图片,自选图形,这些比较简单,和指定给窗体按钮是一样的,同时我们还可以把宏指定给某个“事件,比方单击工作表,双击工作表,激活工作表,翻开工作簿等等,你要安什么要的门铃,选什么样的音乐,随你了。需要强调一点的是,我们刚说的“事件是一个重要的概念,八戒按门铃,就是一个“事件,这个“事件引发了嫦娥的开门,只有门铃响了,嫦娥才会去开门。除此而外“方法“对象“属性都是接下来我们会经常接触到的,慢慢走,留心点,一路上将会精彩不断。6、小结到这里,我们对宏应该有一个简单的了解了吧?宏实际上就是一个简单的VBA的Sub过程,它保存在模块里,以Sub开头,以EndSub结尾,执行时就从第一句逐句执行,直到EndSub结束。就像前面我们说的武术运发动练的那段套路动作,总是抱拳,扎马,出拳然后踢腿,永远不可能没有扎马就出拳,没有出拳就踢腿。我们今天录的这段宏也总是先设字体,再改字体颜色,这种顺序永远不会乱。说完这些,你是不是感觉这些操作古板得没有生气?是不是感觉这宏的操作不能满足自己的需求?叶枫想告诉你的是,宏代码绝不等于VBA,它只是VBA里最简单的运用,尽管许多Excel过程都可以用录制宏来完成,但是通过宏代码还是无法完成许多的工作,如:1不可以建立公式,函数;2没有判断或循环的功能;3不能进行人机交互;4无法显示用户窗体;5无法与其他软件或文件进行互动。.所以,你看了上面的内容后千万不要以为宏就是VBA了,更不要以为自己已经会VBA了,事实上是你才刚沾上VBA的边,或者说连边都没沾上,甚至连宏今天我们都只是作了简单的介绍。路漫漫其修远兮,还等着我们上下去求索,路在脚下,武林高手总是从练习简单的套路动作开始,不要厌倦扎马的单调,静下心多练练,这会是你以后练习武功招式的一个根底,孔子老人家说了,要温故而知新,记得复习稳固,不要学了后面忘了前面,到下次叶枫再见到你的时候你什么都忘记了,好了,今天就到这里,让我们一起加油什么是VBE?相信你还没忘记吧?VBE就是VBA的编辑窗口,所有的VBA操作都在VBE里完成。VBE是一个别离出来的应用程序,它可以与Excel无缝结合,但是需要说明的是要运行VBE必须先运行Excel,VBA模块与Excel工作薄文件一起存储,除非激活VBE,否那么VBA模块是看不见的。1、运行Excel后,怎样切换换到VBE窗口?翻开大门的钥匙有很多把,千万别猴急地去爬下水管道。1按ALT+F11快捷键;2选择“工具“宏“VisualBasic编辑器命令。3、VBA简介简介3右击工作表名称标签,点击查看代码。4单击控件工具箱里的“查看代码。如果你的窗口里找不到控件工具箱,请通过“视图“工具栏“控件工具箱翻开它。5通过控件工具箱建立一个新的控件,双击控件。2、初识VBE窗口这个界面相信你不陌生吧?查看宏的时候我们已经见识过它了。“工程资源管理器显示一个树型图示,包含了当前在Excel中翻开的所有Excel对象,包含工作表,模块,窗体,加载宏及隐藏的工作薄,每个工作薄被认为是一个工程。在工程资源管理器里右击,可以在右键菜单里选择相应的命令插入模块或窗体。如果你想删除它或者保存它,同样也可以在这里进行相应的操作。“属性窗口显示当前你选择的Excel对象的属性。选中某个对象后,可以在属性窗口中修改选中的对象的的各样属性如颜色,名称等。“立即窗口,这是一个非常有用的窗口,在其中可以直接执行VBA语句,测试语句和调试代码,就跟我们在DOS下输入DOS命令一样。如果你的立即窗口不可见,按CRTL+G调出来,可以在里面尝试输入:a1=我在学习VBA回车,看一看A1单元格里发生了什么变化?“代码窗口是干嘛用的?相信你已经很清楚了,当然是用来编辑VBA代码的地方,工程中的每一项都有一个与之相关联的代码窗口,如果要查看某对象的代码窗口,或者说如果要查看某对象上面究竟编写了什么VBA代码,在“工程资源管理器窗口中双击对象即可。当然,你翻开后的窗口不一定和上面一样,VBE的窗口也不只上面几个,我们可以翻开“视图菜单,在里面进行选择需要显示的窗口。这是很重要的几个概念,是写VBA程序的根底,大家仔细读,一定要弄清楚。1、对象及对象层次结构对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。对象可以相互包含,就像一个文件夹里可以包含多个文件夹一样,而这个文件夹又可以被其他的文件夹包含,一个工作薄对象可以包含多个多个工作表对象,一个工作表对象又可以包含多个单元格(或图表,图形等),这种对象的排列模式称为Excel的对象模型。-集合这个概念经常遇到,我理解的集合是对相同类型的对象的统称。某中学有5000个学生,名字各不相同,我们对他都统称为某中学的学生,而不和一一去叫他们的名字,某中学的学生在这里是集合。对象的引用,在Excel里,Workbooks集合包含在Application对象里,当我们要引用某工作薄的时候,要遵循从大到小的规那么。跟表示硬盘里的某个文件的位置一样,比方我们想引用D盘“我的文档文件夹下的名为“我的VBA课程.doc文件时要输入的是:4、对象、属性、方法,事件D:我的文档我的VBA课程.doc同样,如果我们要引用名称为“mybook.xls的工作薄时就是:Application.Workbooks(“mybook.xls)和引用文件不同的是,VBA里使用的分隔符是点。同理,当我们引用“mybook.xls里面的工作表“mysheet时应是:Application.Workbooks(“mybook.xls).Worksheets(“mysheet)可以继续延伸到下一层,引用“mybook.xls里工作表“mysheet里面的单元格区域“A1:D10:Application.Workbooks(“mybook.xls).Worksheets(“mysheet).Range(“A1:D10)但是并不是每一次引用都必须这么呆板,就像猪八戒不用每一次都去爬下水管道。如果我们引用的是活动对象,也就是被激活的对象,引用就可以进行简化。如果是mybook工作薄是激活的,引用可以简化为Worksheets(“mysheet).Range(“A1:D10)如果mysheet当前也是激活的,引用甚至还可以简化为Range(“A1:D10),也可以直接输入A1:D10,如果引用的单元Range是单个的单元格,还可以用Cells行号,列号的引用方式。-2、属性每一个对象都有属性,一个属性就是对一个对象的一个设置。猪八戒背着媳妇高秀兰回自己的紫云洞,猪八戒的媳妇就是对象,“高秀兰就是猪八戒的媳妇的一个属性name属性,引用对象的属性同样也要用点来分隔。猪八戒的媳妇.name高秀兰别闲着,还是动动你的右手,翻开一个工作表,Alt+F11千万别说你不知道这个快捷键是干什么,要不我保证被你气个半死,如果立即窗口没有翻开,按Ctrl+G翻开,在里面输入:复制内容到剪贴板代码:MsgboxWorksheets(1).name回车。Worksheets(1)和Worksheets(“sheet1)有什么区别?Worksheets(1)表示Worksheets集合里的第一个工作表。Worksheets(“sheet1)表示Worksheets集合里名为sheet1的工作表。至于Msgbox是什么,那就自己问Help了,在立即窗口里用鼠标左键把Msgbox抹黑,按F1,就弹出Help里对它的说明了。抹黑代码,再按F1即可看到相应的帮助。叶枫说:“这个方法很适用,一般人我不告诉他。一个对象有哪些属性我们可以在属性窗口里查看,要修改一个对象的某种属性,如名称、显示状态、颜色等等,也可以在属性窗口里进行修改,当然我们还可以利用代码进行修改。改当前工作薄里的第三个工作表的名称为“这个名字是我用VBA改的,想想怎么写代码?把你的代码输在立即窗口里,回车,看看效果,你做到了吗?-3、方法每一个对象都有方法,方法就是在对象上执行的某个动作。和属性相比,属性表示的是对象某种状态或样子,是静态的,就像是语文里的名词、形容词和副词,而方法那么是做某件事的一个动作,就像动词,对象和方法同样用点来分隔。例如Range对象有有一个方法是Select,他的作用是选中指定的Range单元格区域对象,在立即窗口里输入代码:回车,可以看到D1:F10已经被选中了。4、事件在上一面猪八戒按门铃那里,我们已经接触过什么是事件了。简单点说,事件就是由用户或者系统触发的,可以在代码中响应的一段代码。比方,当我们移动鼠标,翻开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等等这些都会产生一系列的事件,通过编写代码响应这些事件,当发生此类事件时,程序代码就会进行相应的操作。这样解释你会不会有些晕?感觉又一次进入了外星人的世界?还是举例说明,我们需要当激活某工作表的时候,自动弹出一个对话框,告诉我们激活的工作表的名称。1翻开一个工作表,Alt+F11翻开VBE窗口,在“工程对象管理器窗口里双击你要进行设置的工作表,使其代码窗口显示。2左面选择对象Worksheet(工作表对象),右面选择Activate事件,我们可以看到在代码窗口里系统已经为我们自动输入了一段代码。复制内容到剪贴板代码:PrivateSubWorksheet_Activate()EndSub提醒提醒:初学的我们,不必完全记住对象及事件的名称,也不必手工输入,系统早为你准备初学的我们,不必完全记住对象及事件的名称,也不必手工输入,系统早为你准备好了,你可以在代码窗口里进行选择,左边是对象,右面是事件,如果你想知道某个对象好了,你可以在代码窗口里进行选择,左边是对象,右面是事件,如果你想知道某个对象例如工作薄、工作表、窗体等有哪些事件,只需要双击这个对象,然后在代友窗口里例如工作薄、工作表、窗体等有哪些事件,只需要双击这个对象,然后在代友窗口里查看即可。我们需要做的只是查看即可。我们需要做的只是:当自己需要它的时候当自己需要它的时候,知道翻开哪个箱子把它拿出来即可知道翻开哪个箱子把它拿出来即可.废话说完,再回到问题里:废话说完,再回到问题里:要到达问题的目的,我们只需要在已给我们列出的两段代码中间参加需要进行操作的要到达问题的目的,我们只需要在已给我们列出的两段代码中间参加需要进行操作的代码就可以了,这里我们需要的是一个对话框来提醒,对了,还记得代码就可以了,这里我们需要的是一个对话框来提醒,对了,还记得Msgbox吧?吧?上面的代码相信你应该能看懂吧?&和我们工作表里的函数是一样的,连接文本的作用,Activesheet.name是当前活开工作表的名字用了一个name属性。回到工作表,激活你刚刚设置代码的工作表,如果你刚刚设置的工作表是激活状态,请选择其他工作表,然后再重新激活它,看看你看到了什么?看一下上面的代码,对象和事件之间用什么来分隔?还是不是点?千万别懒,一定要动手,换其他的事件或其他的对象试一试,试着用代码改一下其他对象的属性,在单元格里添加点什么东西,这些随你了,你可千万别说你不知道哪些事件是干嘛用的。别忘记,抹黑代码,按别忘记,抹黑代码,按F1,再重复一遍,这是一件好武器,一般人我不告诉他,再重复一遍,这是一件好武器,一般人我不告诉他.一个过程就是执行某些动作的代码组合。VBA过程分Sub过程和Function过程。1、Sub过程总是以“sub过程名()开头,以“EndSub结尾,一个过程就是执行某项动作的一套指令,Sub过程不返回运行的结果。2、Function总是以“Function程序名()开头,以“EndFunction结尾,和Sub过程的区别是Function过程返回程序运行的值,值可以是一个值或一个数组,就像我们的工作表函数,Function过程也就是我们说的自定义函数。在这里,叶枫主要要给大家讲的是Sub过程,Function过程如果需要的话,在后面我们再讲。好了,今天已经讲得够多了,你对VBA应该已有一个简单的认识了吧?要设计一个过程,其实很简单,把需要的对象收集起来,看看我们要对他们的属性进行怎样的修改?我们需要做什么?需要用什么样的方法?要用哪些事件?收集起来就是一个完整的过程。只要你肯动手,一定会觉得很简单,你不要被那一大堆的对象、属性、方法和事件给吓晕了,完全不必全部记住它们,需要的时候知道在哪里找就行,而代码也不必一个一个的去输入,还记得前面一贴我们说的录制宏吗?当你需要进行某项操作的时候,不妨先录一段宏,但是宏是呆板的,有许多我们不需要的东西,给它修修枝,剪剪叶,整理整理,一个程序就OK了。5、VBA过程过程同时,建议你在VBE窗口中,单击“工具选项,在弹出的“选项对话框里勾选“自动列出成员。设置好后,试着在代码窗口里输入点代码,看看,有什么?呵呵.,不用我说了,对于初学的我们,很需要它吧?同时,建议你在VBE窗口中,单击“工具选项,在弹出的“选项对话框里勾选“自动列出成员。设置好后,试着在代码窗口里输入点代码,看看,有什么?呵呵.,不用我说了,对于初学的我们,很需要它吧?了解了对象,属性,方法及事件后,猪八戒按门铃开门的过程我们都可以把它写成程序:Sub门铃_单击如果嫦娥.位置在家那么门.开Endsub上面这个并不是真的程序,但都有了程序的思想了,程序里,事件、对象、属性及过程都有了,你能找出来吗?多尝试,温故知新,你可以想着用程序去解决一些你在使用Excel过程中遇到的问题,每一个问题的解决,你都会发现自己得到了很大的进步.好了,还是那句话,路在脚下,继续走,精彩会慢慢为你上演,让我们一起努力,共同进步。在上面,我们简单介绍了VBA的开发环境、几个常用的窗口,并对对象、对象的属性、对象的方法、对象的事件等概念作了简单的介绍,贴子大家认真看了吗?有没有一点点的收获?学习成绩如何?什么是对象?什么是集合?什么是属性?什么是方法?什么是事件?如何正确地表示它们?这些,你都能答复了吗?先沉思三秒钟,如果你不能答复,那请赶快回过头去,再看一遍,我们说VBA是采用面向对象的程序设计方式,这些都是很重要的概念,如果不弄清楚,实际应用时,你可能会感到手忙脚乱。如果已经掌握了,那让我们一起继续本贴的内容。这次,我们将继续单调的根本功练习,讲一些VBA里面的关键字,为程序设计打下根底,还是那句话,希望你不要嫌内容的单调,一口你永远也吞不下一个大胖子,学习是一个循序渐进的过程。VBA的主要目的是什么?不用说了你也知道,当然是处理数据。某些数据存在于对象中,如工作表的单元格区域里,某些数据存在于我们自定义的变量中。6、数据类型、变量、常量、数组、数据类型、变量、常量、数组1、数据类型、数据类型数据类型告诉计算机如何将数据存储在内存中,如以整数、字符串、日期等。数据类型是变量的特性,数据类型包括:数据类型数据类型数据类型数据类型存储空间大小存储空间大小存储空间大小存储空间大小范围范围范围范围ByteByte11个字节个字节00到到255255BooleanBoolean22个字节个字节TrueTrue或或FalseFalseIntegerInteger22个字节个字节-32,768-32,768到到32,76732,767Long(Long(长整型长整型)44个字节个字节-2,147,483,648-2,147,483,648到到2,147,483,6472,147,483,647Single(Single(单精度浮点型单精度浮点型)44个字节个字节负数时从负数时从-3.402823E38-3.402823E38到到-1.401298E-45-1.401298E-45;正数时从;正数时从1.401298E-451.401298E-45到到3.402823E383.402823E38Double(Double(双精度浮点型双精度浮点型)88个字节个字节负数时从负数时从-1.79769313486232E308-1.79769313486232E308到到-4.94065645841247E-324-4.94065645841247E-324;正数时从;正数时从4.94065645841247E-3244.94065645841247E-324到到1.79769313486232E3081.79769313486232E308CurrencyCurrency88个字节个字节从从-922,337,203,685,477.5808-922,337,203,685,477.5808到到922,337,203,685,477.5807922,337,203,685,477.5807(变比整型变比整型)DecimalDecimal1414个字节个字节没有小数点时为没有小数点时为+/-79,228,162,514,264,337,593,543,950,335+/-79,228,162,514,264,337,593,543,950,335,而小数点右边有,而小数点右边有2828位数时为位数时为+/-+/-7.92281625142643375935439503357.9228162514264337593543950335;最小的非零值为;最小的非零值为+/-0.0000000000000000000000000001+/-0.0000000000000000000000000001DateDate88个字节个字节100100年年11月月11日日 到到99999999年年1212月月3131日日ObjectObject44个字节个字节任何任何ObjectObject引用引用StringString1010字节加字符串长度字节加字符串长度00到大约到大约2020亿亿(变长变长)String(String(定长定长)字符串长度字符串长度11到大约到大约65,40065,400Variant(Variant(数字数字)1616个字节个字节任何数字值,最大可达任何数字值,最大可达DoubleDouble的范围的范围Variant(Variant(字符字符)2222个字节加字符串长度个字节加字符串长度与变长与变长StringString有相同的范围有相同的范围用户自定义用户自定义所有元素所需数目所有元素所需数目每个元素的范围与它本身的数据类型的范围相同。每个元素的范围与它本身的数据类型的范围相同。(利用(利用TypeType)1、数据类型、数据类型数据类型告诉计算机如何将数据存储在内存中,如以整数、字符串、日期等。数据类型是变量的特性,数据类型包括:数据类型数据类型数据类型数据类型存储空间大小存储空间大小存储空间大小存储空间大小范围范围范围范围ByteByte1 1个字节个字节0 0到到255255BooleanBoolean2 2个字节个字节TrueTrue或或FalseFalseIntegerInteger2 2个字节个字节-32,768-32,768到到32,76732,767Long(Long(长整型长整型)4 4个字节个字节-2,147,483,648-2,147,483,648到到2,147,483,6472,147,483,647Single(Single(单精度浮点型单精度浮点型)4 4个字节个字节负数时从负数时从-3.402823E38-3.402823E38到到-1.401298E-45-1.401298E-45;正数时从;正数时从1.401298E-451.401298E-45到到3.402823E383.402823E38Double(Double(双精度浮点型双精度浮点型)8 8个字节个字节负数时从负数时从-1.79769313486232E308-1.79769313486232E308到到-4.94065645841247E-324-4.94065645841247E-324;正数时从;正数时从4.94065645841247E-3244.94065645841247E-324到到1.79769313486232E3081.79769313486232E308CurrencyCurrency8 8个字节个字节从从-922,337,203,685,477.5808-922,337,203,685,477.5808到到922,337,203,685,477.5807922,337,203,685,477.5807(变比整型变比整型)DecimalDecimal1414个字节个字节没有小数点时为没有小数点时为+/-79,228,162,514,264,337,593,543,950,335+/-79,228,162,514,264,337,593,543,950,335,而小数点右边有,而小数点右边有2828位数时为位数时为+/-+/-7.92281625142643375935439503357.9228162514264337593543950335;最小的非零值为;最小的非零值为+/-0.0000000000000000000000000001+/-0.0000000000000000000000000001DateDate8 8个字节个字节100100年年11月月11日日 到到99999999年年1212月月3131日日ObjectObject4 4个字节个字节任何任何ObjectObject引用引用StringString1010字节加字符串长度字节加字符串长度0 0到大约到大约2020亿亿(变长变长)String(String(定长定长)字符串长度字符串长度1 1到大约到大约65,40065,400Variant(Variant(数字数字)1616个字节个字节任何数字值,最大可达任何数字值,最大可达DoubleDouble的范围的范围Variant(Variant(字符字符)2222个字节加字符串长度个字节加字符串长度与变长与变长StringString有相同的范围有相同的范围用户自定义用户自定义所有元素所需数目所有元素所需数目每个元素的范围与它本身的数据类型的范围相同。每个元素的范围与它本身的数据类型的范围相同。(利用(利用TypeType)2、变量、变量变量是用于保存在程序运行过程中需要临时保存的值或对象。就相当于我们在操作工作表的时候插入的变量是用于保存在程序运行过程中需要临时保存的值或对象。就相当于我们在操作工作表的时候插入的辅助单元格、辅助列或辅助表一样。辅助单元格、辅助列或辅助表一样。同工作表的单元格一样,变量可以接纳很多种的数据类型,如其名,程序运行后,变量的值是可以改变同工作表的单元格一样,变量可以接纳很多种的数据类型,如其名,程序运行后,变量的值是可以改变的。的。如何定义变量?如何定义变量?定义变量可以使用定义变量可以使用Dim语句:语句:Dim变量名变量名As数据类型数据类型变量名有一定的命名规那么,这里我就不详细说明了,需要提醒的是在程序的设计过程中,你可能会定变量名有一定的命名规那么,这里我就不详细说明了,需要提醒的是在程序的设计过程中,你可能会定义很多的变量,为了阅读及修改程序的方便,你定义的变量名尽量能让人一看就明白这个变量具体代表的是什义很多的变量,为了阅读及修改程序的方便,你定义的变量名尽量能让人一看就明白这个变量具体代表的是什么。在么。在Dim语句中,我们可以不必声明变量的数据类型,直接输入语句中,我们可以不必声明变量的数据类型,直接输入“Dim变量名此时定义的变量将被指定为变量名此时定义的变量将被指定为Variant类型。类型。但我们在程序设计的过程中,一般应该明确数据的类型,这是一个好的编程习惯,因为指定数据类型后但我们在程序设计的过程中,一般应该明确数据的类型,这是一个好的编程习惯,因为指定数据类型后会提高程序的运行速度。会提高程序的运行速度。我们可以在模块中输入我们可以在模块中输入“OptionExplict作为第一句语句来强制声明所有变量。也可以点作为第一句语句来强制声明所有变量。也可以点“工具工具选选项项,在选项对话框里勾选在选项对话框里勾选“要求声明变量。这样,要求声明变量。这样,VBA在遇到没有声明的变量名称,该语句将导致程序停在遇到没有声明的变量名称,该语句将导致程序停止。止。定义变量除了可以使用定义变量除了可以使用Dim语句外,比较常的还有:语句外,比较常的还有:static语句,语句,Private语句,语句,Public语句。使用不同语句。使用不同的语句定义的变量不同的是它们的作用作用域不同,具体为:的语句定义的变量不同的是它们的作用作用域不同,具体为:1如果在一个过程中包含了一个如果在一个过程中包含了一个Dim或或Static语句,此时声明的变量作用域为此过程,即本地变量。语句,此时声明的变量作用域为此过程,即本地变量。2如果在一个模块的第一个过程之前包含了如果在一个模块的第一个过程之前包含了Dim或或Prvate语句,此时声明的变量作用域为此模块里所语句,此时声明的变量作用域为此模块里所有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量;有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量;3如果在一个模块的第一个过程之前包含了如果在一个模块的第一个过程之前包含了Public语名,此时声明的变量作用域为所有模块,即公有语名,此时声明的变量作用域为所有模块,即公有变量。变量。2、变量、变量变量是用于保存在程序运行过程中需要临时保存的值或对象。就相当于我们在操作工作表的时候插入的变量是用于保存在程序运行过程中需要临时保存的值或对象。就相当于我们在操作工作表的时候插入的辅助单元格、辅助列或辅助表一样。辅助单元格、辅助列或辅助表一样。同工作表的单元格一样,变量可以接纳很多种的数据类型,如其名,程序运行后,变量的值是可以改变同工作表的单元格一样,变量可以接纳很多种的数据类型,如其名,程序运行后,变量的值是可以改变的。的。如何定义变量?如何定义变量?定义变量可以使用定义变量可以使用Dim语句:语句:Dim变量名变量名As数据类型数据类型变量名有一定的命名规那么,这里我就不详细说明了,需要提醒的是在程序的设计过程中,你可能会定变量名有一定的命名规那么,这里我就不详细说明了,需要提醒的是在程序的设计过程中,你可能会定义很多的变量,为了阅读及修改程序的方便,你定义的变量名尽量能让人一看就明白这个变量具体代表的是什义很多的变量,为了阅读及修改程序的方便,你定义的变量名尽量能让人一看就明白这个变量具体代表的是什么。在么。在Dim语句中,我们可以不必声明变量的数据类型,直接输入语句中,我们可以不必声明变量的数据类型,直接输入“Dim变量名此时定义的变量将被指定为变量名此时定义的变量将被指定为Variant类型。类型。但我们在程序设计的过程中,一般应该明确数据的类型,这是一个好的编程习惯,因为指定数据类型后但我们在程序设计的过程中,一般应该明确数据的类型,这是一个好的编程习惯,因为指定数据类型后会提高程序的运行速度。会提高程序的运行速度。我们可以在模块中输入我们可以在模块中输入“OptionExplict作为第一句语句来强制声明所有变量。也可以点作为第一句语句来强制声明所有变量。也可以点“工具工具选选项项,在选项对话框里勾选在选项对话框里勾选“要求声明变量。这样,要求声明变量。这样,VBA在遇到没有声明的变量名称,该语句将导致程序停在遇到没有声明的变量名称,该语句将导致程序停止。止。定义变量除了可以使用定义变量除了可以使用Dim语句外,比较常的还有:语句外,比较常的还有:static语句,语句,Private语句,语句,Public语句。使用不同语句。使用不同的语句定义的变量不同的是它们的作用作用域不同,具体为:的语句定义的变量不同的是它们的作用作用域不同,具体为:1如果在一个过程中包含了一个如果在一个过程中包含了一个Dim或或Static语句,此时声明的变量作用域为此过程,即本地变量。语句,此时声明的变量作用域为此过程,即本地变量。2如果在一个模块的第一个过程之前包含了如果在一个模块的第一个过程之前包含了Dim或或Prvate语句,此时声明的变量作用域为此模块里所语句,此时声明的变量作用域为此模块里所有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量;有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量;3如果在一个模块的第一个过程之前包含了如果在一个模块的第一个过程之前包含了Public语名,此时声明的变量作用域为所有模块,即公有语名,此时声明的变量作用域为所有模块,即公有变量。变量。变量的作用域是指变量保存其值的这段时间,也称为变量的生成周期,它决定变量可以用于哪个模块或过程中。给变量赋值用等号是VBA里的赋值运算符。比方我们把我在学习VBA变量!这个字符串赋给变量A,那么直接输入:A=我在学习VBA变量!对了,你可以在立即窗口里试一下逐条输入:A=我在学习VBA变量!MgboxA看一下效果。注意,在VBA里文本是要用英语引号引起来的,还有日期要用#号,比方将日期2021-3-10赋给变量A,那么为:A=#2021-3-10#3、常量、常量执行过程时,变量的值会发生改变,所以我们称它为执行过程时,变量的值会发生改变,所以我们称它为“变量,但有时候我们变量,但有时候我们需要引用不会发生变化的数据,这就是常量。常量声明后,不以对它进行再赋值。需要引用不会发生变化的数据,这就是常量。常量声明后,不以对它进行再赋值。声明常量设定常量的值,需要用声明常量设定常量的值,需要用Const语句:语句:Const常量名常量名As数据类型数据类型常量的值常量的值-4、数组、数组除了变量和常量以外,数组也是我们常用到的。除了变量和常量以外,数组也是我们常用到的。什么是数组什么是数组?数组是具有相同数据类型并且共享一个名字的一组变量的集合。数组也是变量。数组是具有相同数据类型并且共享一个名字的一组变量的集合。数组也是变量。数组中的元素通过索引数字加以区分。数组中的元素通过索引数字加以区分。如何声明数组如何声明数组?可以用可以用Dim语句或者语句或者Public语句声明数组。语句声明数组。Dim/Public数组名数组名(atob)as数据类型数据类型a和b是数组中元素的个数,数组元素素最小值为a,最大值为b,元素个数为(b-a+1)个,当然,你也可以直接输入个数,此时默认最小索引号为0。如:Dimmyarr(5)AsInteger这个数组的最小元素索引号为0,元素个数为6。上面定义的只是一维数组,你还可以定义二维、三维、四维.如:Dimmyarr(1to5,1to10)AsInteger这就是一个二维数组,元素个数为5*1050个。在程序设计的过程中,定义数组的时候我们可能不能确定数组的元素个数,对数组进行声明后,可以在运行时用ReDim语句重新指定数组的大小。-今天的这一局部内容实在很枯燥,连叶枫都有点耐不住了,拉拉杂杂说了这么多,也不知道你看出点门道没?同前一贴讲的内容一样,这些根底都是非常重要的,多读几遍,扎好马才能修练更高深的武功,千万别嫌这个过程的漫长。一个让你心仪的女孩子,想牵上她的小手,徜徉在公园里的林荫小道上,先前的送花、打等等那一串串巴结的行动你会不会嫌太漫长?VBA不像函数那样直面我们,它躲在Excel的背后,像一个“养在深闺未得见的美丽姑娘,她飘在墙角的那缕模糊却美丽的身影对我们充满了诱惑,现在我们正在想法设法寻找她的联系,要想成功俘虏她,这一步能少吗?看的没有动的快,动手操作才是学习的正确方法。发现问题,解决问题,这岂不是一个快乐的过程。=这就要根据你的实际需要,再结合各种数据的的范围来看。在编写程序的过程中,选择需要存储空间尽量小的数据类型来保存所需要的数据,这是很有必要的,虽然我们可以把变量设为Variant型,但上面我说了,定义变量类型会提升程序的运行速度,这也是VBA提供各种数据类型存储空间的原因。该定义变量为哪一种类型?看一看它的长度。用生活中的一个实例来说这个问题:有一天你上街去买一斤菜油,我们需要选择一个容器来装我们所要买的菜油相当于声明变量的类型,如果我们没有选择选择容器,上帝可不知道你要买多少斤菜油,他就扔给你一个超级大的水缸,这个水缸无论你要买多少菜油都是可以装得下的。可是携带这样一个水缸上街你会不会觉得太不方便了?用一个水缸来装一斤菜油会不会太浪费了?所以我们得自己选择一个瓶子去装我们的油,一斤油,用一个瓶子刚好适宜,当然,如果你只用一个茶杯去装,那也是不行的。用数据来打比方,我们需要用变量来保存一个学生某学科考试成绩的分数,那么用Byte数据类型就可以了它的范围是0255,如果在这里使用Integer、Long、Single这些数据类型的话,就相当于我们用水桶,水缸去装那一斤菜油,只是对计算机存储空间的浪费,当然,如果你的值的范围超过了Byte的范围,那定义成Byte也是不行的。7、有人问有人问:如何知道该定义变量为何种类型?如何知道该定义变量为何种类型?定义变量的类型时,除了考虑长度外,还要考虑变量的值的类型。定义变量的类型时,除了考虑长度外,还要考虑变量的值的类型。买油的时候不管是用瓶子还是用水缸,反正都能装回来,但是如果你用麻袋能不买油的时候不管是用瓶子还是用水缸,反正都能装回来,但是如果你用麻袋能不能装那一斤油回来?能装那一斤油回来?还是那句话,如果你没有定义变量类型或定义变量类型为还是那句话,如果你没有定义变量类型或定义变量类型为Variant,聪明的计算时,聪明的计算时机先看你打的油是固体还是液体,是液体的话把麻袋扔在一边,给你弄口大缸子。但机先看你打的油是固体还是液体,是液体的话把麻袋扔在一边,给你弄口大缸子。但是如果你自己选择麻袋上街去买油,你还能不能把你的油带回来?是如果你自己选择麻袋上街去买油,你还能不能把你的油带回来?用数据来打比方,如果你定义了一个变量为用数据来打比方,如果你定义了一个变量为Integer型,那你再用把学生姓名的字型,那你再用把学生姓名的字符串赋给它,行吗?符串赋给它,行吗?复制内容到剪贴板复制内容到剪贴板代码代码:Submysub()DimaAsIntegera=我在学习我在学习VBA变量变量MsgBoxaEndSub将这个过程提制到模块里将这个过程提制到模块里,按按F5运行它运行它,看看是什么结果看看是什么结果?尝试修改一下定义的数据类尝试修改一下定义的数据类型型,看看修改后的运行结果看看修改后的运行结果!VBA函数=用Excel的时间相信你也不短了,什么是函数就不再细说了。与其他编程语言一样,VBA含有各种内置的函数。很多的VBA函数都与Excel的工作表函数类似,或者一样。使用VBA函数的的方式与使用工作表公式中函数的方式相同,在VBA代码中,我们可以使用很多Excel的工作表函数,例如Sum,Abs等。例如:复制内容到剪贴板代码代码:Submyabs()a=InputBox(请输入数值:,提示)labs=Abs(a)MsgBox你输入的值的绝对值为:&labsEndSub这是一个求绝对值的过程,通过InputBox提示用户输入一个数值给变量a,再用Abs函数求出变量的绝对值,最后通过MsgBox返回结果。InputBox同同MsgBox函数一样,是很常用的函数,关于它的功能及用法,请用绝函数一样,是很常用的函数,关于它的功能及用法,请用绝招:抹黑,按招:抹黑,按F1,但并不是所有的工作表函数在VBA里都可以直接调用,但由于WorksheetFunction对象包含在Application对象中,如果我们要在VBA语句里使用某个不能直接调用的工作表函数,只需要在函数名称前加上Application.WorksheetFunction语语即可。如:在VBA里使用counta函数那么代码为:application.worksheetfunction.counta(range(a1:a10)VBA里面的函数很多,可以简化我们的计算和操作,功能强大啊。但当你面对那一堆英文字母,是否为该怎么记住它们感到晕菜?有人对我说,记住常用的几个,其他的不用记那么清楚,有个模糊的印向,用时再翻Help,知道在哪里找就万事OK了。我觉得这个方法很好,现转送给你!控制程序的流程,有判断、分支和循环三种语句。接下来我们将一样一样地进行讲解。程序流程控制if语句1、ifthen语句这个句式相当于中文里面的“如果.那么。格式:if逻辑表达式then语句块endif解释:如果逻辑表达式的结果为true,那么执行语句块里的所有语句,否那么执行endif后面的语句。语句块可以是一句指令或多条指令,也可以调用一个或多个过程,当然,也可以为空,就是没有语句。如:要判断A1单元格是否已输入内容,设计程序:复制内容到剪贴板代码:Subtest1()Ifa1=ThenMsgBoxA1单元格没有输入任何内容!EndIfEndSub2、ifthenelse语句语句这个语句相当于中文里面的这个语句相当于中文里面的“如果如果.那么那么.否那么否那么.句式。句式。格式:格式:if逻辑表达式逻辑表达式then语句块语句块1else语句块语句块2endif解释:如果逻辑表达式的结果为解释:如果逻辑表达式的结果为true,那么执行语句块,那么执行语句块1里的所有语句,如果逻辑里的所有语句,如果逻辑表达式的结果为表达式的结果为Flase那么执行语句块那么执行语句块2里的所有语句。里的所有语句。如:要判断如:要判断A1单元格是否已输入内容,设计程序:单元格是否已输入内容,设计程序:复制内容到剪贴板复制内容到剪贴板代码代码:Subtest2()Ifa1=ThenMsgBoxA1单元格没有输入任何内容!单元格没有输入任何内容!ElseMsgBoxA1单元格已经输入了内容!单元格已经输入了内容!EndIfEndSub3、ifthenelseif语句语句这就相当于中文里面的假设这就相当于中文里面的假设“如果如果那么那么否那么如果否那么如果那么那么否那么语句,否那么语句,当然,可以有多句当然,可以
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!