Excel VBA 从入门到精通
【1.1 VBA与Excel应用程序】
1、看看下面吧:
2、VBA不仅仅能在excel中使用,在其它的office应用软件里面也是可以使用的,比如word。
【1.2 使用Excel的宏】
1、看看下面吧:
看看用“图形对象”执行宏的例子吧:
上图中所说的“清理宏代码”的意思是删除那些不需要的宏代码(因为在录制宏的时候可能会一同
生成许多并不需要的宏代码)。
看看对于宏的安全设置吧:
2、在保存有宏代码的excel文件的时候,文件格式要注意,如果保存成普通的excel格式是
不具有宏的功能的:
3、如下图的代码中其实就是红色矩形中的代码有用,其它的代码是没什么作用的(录制宏的
时候系统自动添加上去的),所以是可以删除掉的,这个就是“清理宏代码”的操作:
【1.3 VBE开发环境】
1、看看下面吧:
2、如下图中的“ThisWorkbook”指的是工作薄,而Sheet1、Sheet2、Sheet3指的是三个工
作表。而我们录制的宏的代码都在模块里面:
3、在代码编辑窗口中可以进行分割窗口、可以显示全代码或者每个代码单独显示等等操作:
4、在输入对象属性和方法代码的时候有时候代码提示功能没有了,此时可以按“ctrl+j”来
重新调出提示来:
在输入命令的时候,想要在只输入了前几个字母的情况下想要让系统自动补全后面的字母的话,可
以用编辑工具栏中的特定按钮来完成操作:
【1.4 第一个VBA程序】
1、看看下面吧:
2、看看上面例子的具体做法吧:
首先创建窗体并添加按钮,然后摆放按钮的位置和改变按钮的标题和名字:
我们先编辑“关闭”按钮的代码,双击这个按钮就可以写它的代码了(这个按钮的代码比较简单,
所以我们先写它吧。双击这个按钮是编辑这个按钮的默认事件,按钮的默认事件是“Click”):
再来编写“九九乘法表”的代码吧:
我们来编写一个模块,为了实现往excel表格里面写入乘法表的功能:
然后给“生成到工作表”按钮添加代码:
最终的代码是如下图所示:
3、我们在输入命令的时候如果拼写正确系统会自动把命令的首字母大写的,如果输入错误就
不会首字母大写了,这个也是我们排错的一个方法(但是vba中关键字是不区分大小写的)。
【1.5 VBA基本概念】
1、看看下面吧:
2、如果没有指定枚举数据中元素的值的话那么它的默认值是从0开始的数字。如下图中的从
“星期日”开始到“星期六”的值分别是0-6:
3、注意枚举数据类型和用户定义数据类型必须要放在声明的部分:
4、看看下面吧:
如下图所示的strName就是模块级变量,下面的三个过程都是可以使用它的。而x就是过程变量
了,它只能在test1这个过程里面使用,在test2里面使用就会出错的。如果把strName声明成全
局变量的话,那么在其它的模块中也是可以使用它的(的意思就是在声明变量的时
候强制要指定这个变量的数据类型,如果不指定变量的数据类型是会报错的)。
5、VBA中的英文字符是不区分大小写的。
6、如果在声明变量的时候不指明变量的数据类型的话,这个变量就是变体类型的数据类型,
也就是可以存储任何的数据类型的数据,这个我们后面的课程还会讲到的。但是如果用这种变体类
型的变量可能会出现一些异常的,所以可以用 “强制声明变量”,这样一来在定义
变量时如果不给出数据类型的话系统是不会通过的。
7、在运行程序的时候工程级变量和模块变量都是一直保存在内存之中的,所以我们才可以一
直使用它,而过程变量会在这个过程结束后也就从内存中消失了。
8、如果我们想要过程变量的值一直存在不消失的话就需要把这个变量用static声明成静态
变量了(和工程级变量一样当excel文件关闭后静态变量才会消失的):
【1.6 VBA常用语句】
1、看看下面吧:
上图中的“值”是可以相加的,也就是让多个设置都生效,比如设置成50就是48和2都生效。
2、看看例子吧:
3、看看例子吧:
4、看看下面吧:
【1.7 程序控制结构】
1、看看下面吧:
2、看看例子吧:
下面是计算个人所得说的例子(我们可以在一个单元格内插入这个自定义的函数,那么程序就会自
动计算出你给出的工资应该缴纳多少的个人所得税了):
下图中的curPay变量就是实际的工资数(个人所得税是按照实际工资减去3500的部分按照不同的
百分比征收的)
看看嵌套分支结构的例子吧(Offt是一个偏移函数,是在当前单元格右边的单元格里面显示内
容):
3、看看下面吧:
4、看看例子吧:
【1.8 数组】
1、看看下面吧:
2、看看下面吧:
3、看看下面吧:
4、看看例子吧:
【1.9 Sub过程】
1、看看下面吧:
2、看看例子吧:
3、看看例子吧:
【1.10 function函数】
1、看看下面吧:
2、看看例子吧:
当然也可以在excel表格里面插入function函数的:
3、看看把数字金额转换为中文大写的例子吧:
4、看看生成彩票号码的例子吧(randomize是随机数发生器,rnd()是生成一个0-1的随
机数):
这个函数返回的是一个数组,所以我们必须要用数组公式,也就是这个函数的两边加上了大括号了
(也就是在公式栏输入这个函数名后按ctrl+shift+enter就是加上了大括号了,如下图所示):
5、上例中如果想要每一位的数组都不能重复的话,就需要在生成每个数字的时候加上判断的
条件了,也就是判断此数字有没有重复的,自己可以想一想。
【1.11 对象描述】
1、看看下面吧:
2、看看下面吧:
【1.12 excel对象模型】
1、看看下面吧:
2、我们不可能把所有的vba中的对象都记住,所以可以用帮助文档来学习每个对象的使用。
3、看看下面吧:
4、对象浏览器还可以查找函数和常数等等。
【第13章 Excel常用对象】
1、看看下面吧:
下图的例子就是看看打开屏幕更新后进行10000次单元格隐藏操作所用的时间,以及关闭屏幕更新
后进行相同操作所用的时间,然后用MsgBox显示出来(进行的是偶数行的隐藏,其中
就是隐藏屏幕更新的设置)。如果每隐藏一次单元格就进
行一次屏幕更新的话就太麻烦了,所以有时我们需要进行一些操作后最后在进行屏幕更新操作:
由上图可见关闭屏幕更新后程序的执行效率更高了。所以在进行很多数据操作的时候要注意使用这
种提高效率的方式。
现在我们把刚才隐藏的行再显示出来,注意此处使用关闭屏幕更新的方式同样会提高效率的:
2、看看下面的例子吧:
再看看吧:
再看看吧:
再看看吧:
3、看看例子吧。下图中用with和end with包含起来的内容,其中“.Name”就是表示with
后面的对象的Name属性,也就是,这里用了with就是一种简便的写法了,除了
name属性其它的也是同理。是一个错误处理,也就是当“on error”
包含的代码执行时出现错误的时候并不会报错,而是到下一行去执行,好像相当于异常处理了:
再看看吧:
4、表示一个A1到C1的单元格区域,而就表示A1这个具体
的单元格了,也就是用冒号表示区域。
5、看看下面吧:
【1.14 常用VBA代码】
1、看看下面吧:
此例子中我们用cell来引用单元格的,有时我们还会用到range来引用单元格,前者是用第几行
第几列来引用的,后者是用具体的字符串来引用的。
2、看看例子吧:
看看下面吧:
看看下面吧(此例中首先要把选中的一个区域命名为“MyRange”,然后对其进行操作):
看看下面吧(三维区域指的就是同时对多个工作表进行操作):
3、看看下面吧:
看看下面吧:
看看下面吧(下图中判断指定工作表是否存在的SheetExists函数不是系统提供的,而是我们自己
编写的):
看看下面吧:
看看下面吧:
看看下面吧:
【1.15 Excel的事件】
1、看看下面吧:
2、看看例子吧:
3、看看下面吧:
看看下面吧:
看看下面啊:
看看下面吧:
看看下面吧:
4、看看下面吧:
5、看看下面吧:
6、看看下面吧:
【1.16 自定义Excel 2010功能区】
1、看看下面吧:
将这个文件改名为压缩格式的文件然后看看里面都有什么文件和文件夹吧,其实excel2010就是用
xlsm这种格式来把多个文件进行压缩的。
2、看看怎么自定义工作区吧,新建一个excel文件后首先插入一个模块并输入如下的代码:
关闭工作薄,在这个工作薄同级目录下创建一个customUI文件夹,在这个文件夹里面新建一个文
件,命名为:
然后再把这个文件命名为,然后把customUI这个文件夹复制到这个
压缩文件里面去:
打开“_rels”这个文件夹里面的“.rels”这个文件,在里面添加如下图红色矩形所示的代码:
然后再将这个压缩文件重新改名为“” ,打开这个文件后我
们就会发现这个文件增加了一个选项卡了:
而且这个按钮还有插入内容的功能(就是我们前面编写的模块的功能):
3、上面的操作只是我们从vba开发的角度来认识一下自定义工作区的编写步骤,其实在
excel2010中我们可以通过简单的方法来实现的(在excel2007中可能是不行的):
4、实际上“.exlm”文件格式是一个压缩的格式,里面保存了包括xml等的文件和文件夹的。
【1.17 创建工作表窗体】
1、看看下面吧:
下图中的“表单控件”指的是excel的控件,而“ActiveX控件”指的是vba中的控件,我们重点
是讲“表单控件”的使用。
2、在给按钮指定了代码之后再用鼠标左键单击它就会执行代码了,此时如果想要选中这个按
钮的话就需要使用鼠标右键单击了(右键单击后就可以进行删除按钮或者修改按钮等操作了)。
3、看看下面吧:
组合框要显示的内容是一个单元格的区域,可以给组合框设置“数据源区域”。而“单元格链接”
的意思就是单击这个组合框里面的内容后在哪个单元格里面显示所选择的序号(其它控件的“单元
格链接”选项也是差不多的道理):
4、我们来做一个例子吧,照着样子用控件摆放上去就可以了:
【1.18 自定义窗体】
1、看看下面吧:
2、看看例子吧:
3、用“格式”中的对齐命令可以方便的对齐控件的位置:
【1.19 使用标准控件】
1、看看下面吧:
看看例子吧:
2、看看例子吧:
3、看看例子吧:
4、看看例子吧:
【1.20 使用Activex控件】
1、看看下面吧:
2、要完成更加强大的功能就需要用到Activex控件了,普通的控件就不能够完成了。
3、看看我们用imagelist控件来改进信号灯的那个例子。imagelist控件是用来储存图片的,
而image控件如果需要图片的时候就可以从imagelist里面直接来调用的:
看看例子吧:
效果和以前我们用3张独立图片的一样,但是做起来要比以前的方便些。
4、看看下面treeview的例子吧。它用到的图标可以也由imagelist提供:
5、看看listview的例子吧。它所用到的图标也可以由imagelist提供:
【1.21 使用内置对话框】
1、看看下面吧:
注意这个例子用的是application的inputbox方法,而不是直接用的inputbox这个函数。
2、看看例子吧:
3、如果是如下图的代码就可以在打开的对话框里面进行多项选择了:
4、看看例子吧:
5、看看下面吧:
看看例子吧:
看看例子吧:
看看例子吧:
【1.22 使用VBA控制图表】
1、看看下面吧:
图表分为嵌入到工作表中的,还有就是自己独立就是一个工作表的,在使用时需要注意它们的目录
级别是不同的,如上图所示。
2、看看例子吧:
3、再看看吧:
4、使用这种代码添加图标的方法和使用工具栏添加图标方法的作用是相同的:
【1.23 Excel加载宏】
1、看看下面吧:
看看载入加载宏的例子吧:
这样在工具栏就出现了一个数据分析和规划求解的栏目了:
而卸载加载项就是把如下图的窗口的选项给取消掉选择就可以了:
2、看看下面的例子吧:
首先在一个工作表中输入如下图所示的中英文单词:
看看效果吧:
3、上面这种通过对话框的方式,或者是通过往单元格里面插入函数的方式使用起来都不是很
方便,所以我们要通过加载宏的方式。
上图中之所以要有删除按钮的操作,是因为如果不删除的话其它的工作薄也会有这个加载宏的按钮
了:
注意要把这个文件保存为如下图所示的格式才能让加载宏生效:
4、我们在新建一个excel文件的时候是没有我们新建的加载宏的:
然后我们添加上这个加载宏:
加载宏默认是存在如下图所示的目录中的:
这回工具栏中就有了这个加载宏了:
5、利用这个加载宏的功能我们就可以把一些常用的函数存储成加载宏的格式,然后通过在工
具栏上添加加载宏的方式就可以方便的使用了。
【1.24 使用类模块】
1、看看下面吧:
看看例子吧:
2、看看窗体的代码吧:
3、看看效果吧:
【1.25 调用API】
1、看看下面吧:
2、我们使用vba自带的函数只能开发有限功能的程序,可是如果调用了windows的api就可
以开发出功能更为全面的程序了。可以从网上下载一个API函数的帮助文档,以方便你查找和使用。
3、看看例子吧:
下面是用vba函数操作注册表:
看看用API函数操作注册表的例子吧:
4、看看获取内存信息的API函数的例子吧:
【1.26 数据库编程】
1、看看下面吧:
2、对于大数据的存储和处理,数据库比较适合,而对于数据的查看和图形化excel使用起来
又很方便,所以经常把两者结合起来使用。
3、看看例子吧:
首先我们看看要访问的access数据库里面的内容:
看看在vba里面的代码吧:
上图中的“工作单位”是“T_UnitInfo”这个数据表里面的内容,这个就是数据表之间的联系(因
为如果我们直接把工作单位写在“T_Member”这个数据表里面的话,那么如果以后要是想要修改这
个工作单位名称的话那么我们就需要把很多东西都给修改了,而如果利用这种表之间的联系的话我
们只需要修改“T_UnitInfo”这个表里面的内容就可以了,这样就方便了不少):
看看vab里面的代码吧。注意要使用ado对象就首先要先添加这个对象的引用:
【第27章 使用文件对象模型】
1、看看下面吧:
2、看看下面吧:
3、看看例子吧:
再看看吧:
再看看吧:
【第28章 控制Office其他程序】
1、看看下面吧:
看看excel文件里面的内容吧:
看看word文档里面的内容吧:
我们在这个word文档里面的不同位置插入了书签(在进行vba编程的时候我们会用到标签,比如
在标签的位置插入excel里面的某项内容):
然后把这个word文档保存为模板文件:
再看看excelvba里面的代码吧(之前要引入word对象):
2、在excel中调用word的功能那么此时word就是服务程序,excel就是控制程序。
3、excel中最大好像是1048576行:
【第29章 Excel应用程序的安全】
1、看看下面吧:
看看例子吧:
上图中的ShowSheet()函数是为了试验用的,能够让我们看见所有的工作表,在实际发布的时候
需要把这个函数给删除掉。
2、看看效果吧:
3、看看下面吧:
【第30章 VBA程序调试】
1、看看下面吧:
我们可以用鼠标左键在代码编辑区左部单击来设置一个断点,这样在程序运行到这里的时候就会暂
停并等待你的操作。
2、程序有三种状态,即设计状态、运行状态和中断状态。
3、监视器可以监视变量的值:
再看看吧:
4、看看本地窗口的使用吧(能够显示当前过程中的变量,不能看其他过程中的变量):
5、看看立即窗口的使用吧(立即窗口就像打草稿似得,能够把结果立即显示出来):
在代码中也可以用输出内容的:
【第31章 VBA程序优化】
1、看看下面吧:
2、EXCELvba是宏语言,所以执行效率就相比其他语句比较低,所以我们应更注意对于程序
的优化处理。
3、如果循环体里面我们可以优化的话,那么每次执行循环都节省点时间的话总共循环可以节
省的时间就不少了;在对象集合里面我们要尽量使用for each„next这种循环结构,他要比普通
的for循环执行效率高。
4、把一个对象赋值给一个变量,那么每次操作这个变量要比直接操作这个对象的效率要高。
5、使用“早期变量”的意思就是声明一个变量的时候就指定这个变量的类型,尽量不要使用
变体类型的。
6、我们可以直接对一个对象进行操作,而不用先激活然后再选择再操作,这样的效率比较低,
没有直接操作的效率高。
7、 “使用合理的对象书写形式”指的是我们使用不同的对象书写形式会造成执行效率的不
同,比如cells这种调用单元格的形式就要比range这种形式的效率高。
【第32章 VBA错误处理】
1、看看下面吧:
2、看看例子吧:
是模拟产生一个错误。
3、看看下面的例子吧:
再看看吧:
再看看吧:
4、再看看例子吧:
【第33章 制作帮助系统】
1、看看下面吧:
如上图中的批注或者说明信息都可以称是简单的帮助系统。但是我们所说的帮助系统是要做一个帮
助文件。
看看例子吧。首先我们准备好了3个网页:
然后打开制作帮助文件的软件(是个免费软件,可以在网上下载):
虽然这个帮助文件创建好了,但是功能还不完善。我们可以给这个文件添加目录等等来完善其功能:
下图是我们自定义的目录名:
给这个目录设定标题,和指定一个连接:
然后在这目录下面添加页面:
然后再添加一个页面。然后保存:
然后我们还可以创建一个索引。先给这个索引起名:
然后在这个索引里面插入关键字和连接:
然后再插入一个关键字和它的连接。然后保存:
最后编译文件:
现在再看看这个chm文件就和刚才不同了:
2、一般简单的vba程序不需要给它制作帮助系统,但是比较复杂的vba程序需要给它制作帮
助系统,以便用户能够快速的掌握其用法。
3、用微软提供的工具我们就可以制作chm帮助文件。
4、我们看看怎么把这个帮助文件和vba程序发生联系:
首先要指定帮助文件的路径:
然后指定在工作薄加载的时候,只要按F1键就打开帮助文件:
本文发布于:2023-11-23 01:43:34,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1700675014223588.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:ExcelVBA入门到精通.doc
本文 PDF 下载地址:ExcelVBA入门到精通.pdf
留言与评论(共有 0 条评论) |