EXcelVBA基础入门.docx
- 文档编号:17331587
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:57
- 大小:947.01KB
EXcelVBA基础入门.docx
《EXcelVBA基础入门.docx》由会员分享,可在线阅读,更多相关《EXcelVBA基础入门.docx(57页珍藏版)》请在冰点文库上搜索。
EXcelVBA基础入门
1、什么是VBA?
为什么要学习VBA
2、VBA与宏
3、VBE简介
4、对象、属性、方法、事件
5、VBA过程
6、数据类型、变量、数组、常量
7、(回复)该定义变量为何种数据类型
8、VBA的函数
9、程序流程控制:
if语句
10、程序流程控制:
SelectCase语句
11.程序流程控制:
For—next语句
12、几个for—next循环的例子(作者:
老朽
13、程序流程控制:
For—Each语句
14、程序流程控制:
DoWhile语句
15、程序流程控制:
DoUntil语句
16、程序流程控制:
Goto语句
17、用户窗体
18、再说Excel的对象模型
19、[小试牛刀]制作一个个性化的欢迎界面
20、处理单元格数据(复制、剪切、删除
21、Range对象的End属性(带作业)
22、花名册分类(实例)
23、花名册汇总(实例
24、新建工作表
25、认识数组
(一)
26、Worksheet的Change事件(带作业)
27、关于Application.EnableEvents属性(有实例动画)
Application.EnableEvents补充说明
28、关于Worksheet的SelectionChange事件(有实例动画)
29、Worksheet的SelectionChange事件实例(trustwxq朋友提供)
什么是VBA?
为什么要学习VBA?
=========
VBA是VisualBasicForApplication的简称,VBA是建立在Office中的一种应用程序开发工具。
VBA与宏
3、寻根问底,找到宏的老窝
如果你忘记了,请你再打开宏录制对话框,在宏名的下面,有一个“保存在”的选项,点一点下拉的箭头,我们可以看到,宏可以保存在三种不同的位置,分别是:
(1)当前工作簿(系统默认):
宏保存在当前工作薄的模块里,只有当该工作薄打开时,宏才起作用。
(2)新工作簿:
新建一个工作薄保存。
(3)个人宏工作簿:
这是为宏而设计的一种特殊的具有自动隐藏特性的工作簿,如果你要让某个宏在多个工作簿都能使用,那么就应当创建个人宏工作簿,并将宏保存于其中。
4、拨开层层迷雾,查看庐山真面目
宏靠什么来控制Excel的运行?
(1)按Alt+F8快捷键打开“宏”对话框;
(2)选择我们刚才录制的宏,点“编辑”按钮。
眼前一亮吧?
这是一个新的天地——VBA的编辑器窗口(VBE),这个我们以后再说,先将注意力集中到显示的代码上。
代码如下:
复制内容到剪贴板
代码:
Submysub()
'mysubMacro
'宏由ggsmart录制,时间:
2009-2-27'
WithSelection.Font
.Name="仿宋"
.Size=12
.Strikethrough=False
.Superscript=False
.Subscript=False
.OutlineFont=False
.Shadow=False
.Underline=xlUnderlineStyleNone
.ColorIndex=xlAutomatic
EndWith
Selection.Font.ColorIndex=3
EndSub
5、再进一步,给宏安上门铃
一遍一遍地在宏对话框里选择宏名称,按“执行”按钮来运行宏的麻烦是不是让你郁闷得有些想吐血?
指定快捷键虽然方便,但别人用自己的工作表时能不能快速上手?
就算是自己,如果宏多了,或是放的时间长了,你还记得哪个快捷键控制哪个宏?
作为excel开发者,一个主要的目标是为自动化提供一个易于操作的界面,“按钮”是最常见的界面组成元素之一,我们可以把宏指定给特定的按钮,通过按钮来执行宏,还是用刚才我们录制的那个宏来举例。
通过使用“窗体”工具栏,可以为工作簿中的工作表添加按钮。
在创建完一个按钮后,可以为它指定宏,然后你的用户就可以通过单击按钮来执行宏。
在本练习中,将创建一个按钮,并为它指定一个宏,然后用该按钮来执行宏。
具体步骤如下:
(1)打开菜单—>视图—>工具栏—>窗体,调出窗体工具栏。
1.jpg(7KB)
(2)单击”窗体“工具栏中的“按钮”控件,在工作表中希望放置按钮的位置按下鼠标左键,拖动鼠标画出一个按钮,松开鼠标后,Excel会自动显示“指定宏”对话框。
2.jpg(31.38KB)
(3)从“指定宏”对话框中选择“mysub”,单击“确定”。
这样,就把该宏指定给命令按钮。
引用:
3.jpg(16.03KB)
为什么显示出来的是一样,而实际的名字却是另一样呢?
也许你现在会感到迷茫,但不用管它,以后当我们学习了属性后,一切就自然明白了.
下面我们来试一试用按钮操作:
(1)选择单元格或单元格区域;
(2)单击按钮。
4.jpg(61.93KB)
叶枫想告诉你的是,宏代码绝不等于VBA,它只是VBA里最简单的运用,尽管许多Excel过程都可以用录制宏来完成,但是通过宏代码还是无法完成许多的工作,如:
(1)不可以建立公式,函数;
(2)没有判断或循环的功能;
(3)不能进行人机交互;
(4)无法显示用户窗体;
(5)无法与其他软件或文件进行互动。
VBE简介
什么是VBE?
相信你还没忘记吧?
VBE就是VBA的编辑窗口,所有的VBA操作都在VBE里完成。
VBE是一个分离出来的应用程序,它可以与Excel无缝结合,但是需要说明的是要运行VBE必须先运行Excel,VBA模块与Excel工作薄文件一起存储,除非激活VBE,否则VBA模块是看不见的。
1、运行Excel后,怎样切换换到VBE窗口?
(1)按ALT+F11快捷键;
(2)选择“工具”—>“宏”—>“VisualBasic编辑器”命令。
1.jpg(29.14KB)
(3)右击工作表名称标签,点击查看代码。
2.jpg(17.69KB)
(4)单击控件工具箱里的“查看代码”。
3.jpg(28.24KB)
如果你的窗口里找不到控件工具箱,请通过“视图”—>“工具栏”—>“控件工具箱”打开它。
4.jpg(35.59KB)
(5)通过控件工具箱建立一个新的控件,双击控件。
5.jpg(36.24KB)
2、初识VBE窗口
6.jpg(85.09KB)
“工程资源管理器”显示一个树型图示,包含了当前在Excel中打开的所有Excel对象,包含工作表,模块,窗体,加载宏及隐藏的工作薄,每个工作薄被认为是一个工程。
在工程资源管理器里右击,可以在右键菜单里选择相应的命令插入模块或窗体。
如果你想删除它或者保存它,同样也可以在这里进行相应的操作。
7.jpg(30.89KB)
“属性窗口”显示当前你选择的Excel对象的属性。
选中某个对象后,可以在属性窗口中修改选中的对象的的各样属性.如颜色,名称等。
8.jpg(37.77KB)
“立即窗口”,这是一个非常有用的窗口,在其中可以直接执行VBA语句,测试语句和调试代码,就跟我们在DOS下输入DOS命令一样。
如果你的立即窗口不可见,按 CRTL+G调出来,可以在里面尝试输入:
[a1]=”我在学习VBA”
回车,看一看A1单元格里发生了什么变化?
9.jpg(36.51KB)
“代码窗口”是干嘛用的?
相信你已经很清楚了,当然是用来编辑VBA代码的地方,工程中的每一项都有一个与之相关联的代码窗口,
如果要查看某对象的代码窗口,或者说如果要查看某对象上面究竟编写了什么VBA代码,在“工程资源管理器”窗口中双击对象即可。
10.jpg(30.07KB)
当然,你打开后的窗口不一定和上面一样,VBE的窗口也不只上面几个,我们可以打开“视图”菜单,在里面进行选择需要显示的窗口。
对象、属性、方法,事件
==============
这是很重要的几个概念,是写VBA程序的基础,大家仔细读,一定要弄清楚。
1、对象及对象层次结构
对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。
对象可以相互包含,就像一个文件夹里可以包含多个文件夹一样,而这个文件夹又可以被其他的文件夹包含,一个工作薄对象可以包含多个多个工作表对象,一个工作表对象又可以包含多个单元格(或图表,图形等),这种对象的排列模式称为Excel的对象模型。
----------
集合这个概念经常遇到,我理解的集合是对相同类型的对象的统称。
对象的引用,在Excel里,Workbooks集合包含在Application对象里,当我们要引用某工作薄的时候,要遵循从大到小的规则。
跟表示硬盘里的某个文件的位置一样,比如我们想引用D盘“我的文档”文件夹下的名为“我的VBA课程.doc”文件时要输入的是:
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、属性
每一个对象都有属性,一个属性就是对一个对象的一个设置。
别闲着,还是动动你的右手,打开一个工作表Alt+F11,如果立即窗口没有打开,按Ctrl+G打开,在里面输入:
复制内容到剪贴板
代码:
MsgboxWorksheets
(1).name
回车。
1.jpg(53.4KB)
Worksheets
(1)和Worksheets(“sheet1”)有什么区别?
Worksheets
(1)表示Worksheets集合里的第一个工作表。
Worksheets(“sheet1”)表示Worksheets集合里名为"sheet1"的工作表。
至于Msgbox是什么,在立即窗口里用鼠标左键把Msgbox抹黑,按F1,就弹出Help里对它的说明了。
抹黑代码,再按F1即可看到相应的帮助。
2.jpg(42.52KB)
一个对象有哪些属性我们可以在属性窗口里查看,要修改一个对象的某种属性,如名称、显示状态、颜色等等,也可以在属性窗口里进行修改,当然我们还可以利用代码进行修改。
改当前工作薄里的第三个工作表的名称为“这个名字是我用VBA改的”,想想怎么写代码?
把你的代码输在立即窗口里,回车,看看效果,你做到了吗?
-------------------------------------------------------
3、方法
每一个对象都有方法,方法就是在对象上执行的某个动作。
和属性相比,属性表示的是对象某种状态或样子,是静态的,就像是语文里的名词、形容词和副词,而方法则是做某件事的一个动作,就像动词,对象和方法同样用点来分隔。
例如Range对象有有一个方法是Select,他的作用是选中指定的Range(单元格区域)对象,在立即窗口里输入代码:
回车,可以看到D1:
F10已经被选中了。
3.jpg(36.23KB)
-------------------------------------------------------
4、事件
事件就是由用户或者系统触发的,可以在代码中响应的一段代码。
比如,当我们移动鼠标,打开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等等这些都会产生一系列的事件,通过编写代码响应这些事件,当发生此类事件时,程序代码就会进行相应的操作。
举例说明,激活某工作表的时候,自动弹出一个对话框,告诉我们激活的工作表的名称。
(1)打开一个工作表,Alt+F11打开VBE窗口,在“工程对象管理器”窗口里双击你要进行设置的工作表,使其代码窗口显示。
(2)左面选择对象Worksheet(工作表对象),右面选择Activate事件,我们可以看到在代码窗口里系统已经为我们自动输入了一段代码。
PrivateSubWorksheet_Activate()
EndSub
引用:
提醒:
初学的我们,不必完全记住对象及事件的名称,也不必手工输入,系统早为你准备好了,你可以在代码窗口里进行选择,左边是对象,右面是事件,如果你想知道某个对象(例如工作薄、工作表、窗体等)有哪些事件,只需要双击这个对象,然后在代码窗口里查看即可。
我们需要做的只是:
当自己需要它的时候,知道打开哪个箱子把它拿出来即可.
4.jpg(47.51KB)
MsgBox"你现在激活的工作表名称是:
"&ActiveSheet.Name
上面的代码相信你应该能看懂吧?
&和我们工作表里的函数是一样的,连接文本的作用,Activesheet.name是当前活动工作表的名字(用了一个name属性)。
回到工作表,激活你刚才设置代码的工作表,如果你刚才设置的工作表是激活状态,请选择其他工作表,然后再重新激活它,看看你看到了什么?
5.jpg(34.5KB)
VBA过程
一个过程就是执行某些动作的代码组合。
VBA过程分Sub过程和Function过程。
1、Sub过程总是以“sub过程名()”开头,以“EndSub”结尾,一个过程就是执行某项动作的一套指令,Sub过程不返回运行的结果。
2、Function总是以“Function程序名()”开头,以“EndFunction”结尾,和Sub过程的区别是Function过程返回程序运行的值,值可以是一个值或一个数组,就像我们的工作表函数,Function过程也就是我们说的自定义函数。
同时,建议你在VBE窗口中,单击“工具——选项”,在弹出的“选项”对话框里勾选“自动列出成员”。
1.jpg(32.45KB)
2.jpg(15.69KB)
了解了对象,属性,方法及事件后,猪八戒按门铃开门的过程我们都可以把它写成程序:
Sub门铃_单击()
如果嫦娥.位置=在家那么门.开
Endsub
上面这个并不是真的程序,但都有了程序的思想了,程序里,事件、对象、属性及过程都有了,你能找出来吗?
多尝试,温故知新,你可以想着用程序去解决一些你在使用Excel过程中遇到的问题,每一个问题的解决,你都会发现自己得到了很大的进步.
数据类型、变量、常量、数组
1、数据类型
数据类型告诉计算机如何将数据存储在内存中,如以整数、字符串、日期等。
数据类型是变量的特性,数据类型包括:
数据类型
存储空
间大小
范围
Byte
1个字节
0到255
Boolean
2个字节
True或False
Integer
2个字节
-32,768到32,767
Long(长整型)
4个字节
-2,147,483,648到2,147,483,647
Single(单精度浮点型)
4个字节
负数时从-3.402823E38到-1.401298E-45;正数时从1.401298E-45到3.402823E38
Double(双精度浮点型)
8个字节
负数时从-1.79769313486232E308到
-4.94065645841247E-324;正数时从4.94065645841247E-324到1.79769313486232E308
Currency
8个字节
从-922,337,203,685,477.5808到922,337,203,685,477.5807
(变比整型)
Decimal
14个字节
没有小数点时为+/-79,228,162,514,264,337,593,543,950,335,而小数点右边有28位数时为+/-7.9228162514264337593543950335;最小的非零值为+/-0.0000000000000000000000000001
Date
8个字节
100年1月1日到9999年12月31日
Object
4个字节
任何Object引用
String
10字节加字符串长度
0到大约20亿
(变长)
String(定长)
字符串长度
1到大约65,400
Variant(数字)
16个字节
任何数字值,最大可达Double的范围
Variant(字符)
22个字节加字符串长度
与变长String有相同的范围
用户自定义
所有元素所需数目
每个元素的范围与它本身的数据类型的范围相同。
(利用Type)
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里文本是要用英语引号引起来的,还有日期要用#号,比如将日期2009-3-10赋给变量A,则为:
A=#2009-3-10#
3、常量
执行过程时,变量的值会发生改变,所以我们称它为“变量”,但有时候我们需要引用不会发生变化的数据,这就是常量。
常量声明后,不以对它进行再赋值。
声明常量设定常量的值,需要用Const语句:
Const常量名As数据类型=常量的值
4、数组
除了变量和常量以外,数组也是我们常用到的。
什么是数组?
数组是具有相同数据类型并且共享一个名字的一组变量的集合。
数组也是变量。
数组中的元素通过索引数字加以区分。
如何声明数组?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXcelVBA 基础 入门