VBA新手入门教材文档格式.docx
- 文档编号:18345488
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:40
- 大小:670.30KB
VBA新手入门教材文档格式.docx
《VBA新手入门教材文档格式.docx》由会员分享,可在线阅读,更多相关《VBA新手入门教材文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
通过命令按钮进行,(如图1)(备注我们常用工具栏上没有这个,要从自定义里拖出来才有),进入VBE编辑的方法不只这二种
2.VBE窗口的介绍:
A.视图菜单下:
工程资源管理器;
属性窗口;
立即窗口。
B.插入菜单下:
插入模块;
插入过程;
插入用户窗体。
C.调试菜单下:
逐语句调试(快捷键F8)。
切换断点(快捷键F9)
D.运行菜单下:
运行子过程(快捷键F5)
F.工具菜单下:
选项编辑器格式选项卡字体大小为11磅
3.代码的缩进:
A.Tab键右缩进
B.Shift+Tab键,还原右缩进一步
4.模块:
A.普通模块,对象模块(工作表模块,工作薄模块),窗体模块,类模块。
第二讲录制宏修改宏保存宏指定宏自定义按钮加载宏
1.录制行高的宏
方法:
选择第3行选择工具菜单宏录制新宏,跳出一个对话框,确定后,选择第3行,单击鼠标右键,行高设置为30确定,然后选择工具宏停止录制
ALT+F11,打开VBE编辑窗口,左键双击模块,这就是刚才录制的宏代码,
1#SubMacro1()
2#Selection.RowHeight=30
3#EndSub
代码解析第一行表示子过程开始;
第二行Selection是选择的意思,RowHeigh行高,选择的行高设置为30;
第三行是结束的意思
继续,在画图工具中选择椭圆,再左键点椭圆,右键,点击指定宏,做到这步以后,选择第6行,然后点击椭圆,看看效果,这个就是录制宏到使用宏
2.
录制选择性粘贴的宏
打开工作薄”选择性粘贴的宏(未做的)”备注这个工作薄在课件里选择工作表1选择工具菜单宏录制宏,跳出一个对话框,绝对引用确定后选择区域B3:
C7单击鼠标的右键复制选择区域H3:
I7选择性粘贴加确定双击单元格E3,单击单元格E4停止录制
ALT+F11,打开VBE编辑窗口,这就是刚才录制的宏代码,
1#SubMacro1()'
2#'
Macro1Macro
'
3#宏由999宝藏网录制,时间:
2011-2-7
4#Range("
B3:
C7"
).Select
5#Selection.Copy
6#Range("
H3:
I7"
7#Selection.PasteSpecialPaste:
=xlPasteAll,Operation:
=xlAdd,SkipBlanks:
=_
False,Transpose:
=False
8#EndSub
代码解析:
第四行代码单元B3:
C7选中,第五行代码复制B3:
C7,第六行代码单元格H3:
I7选中,第7行代码选择性粘贴,加
然后把宏指定给一个椭圆,试试
3.录制一个清除数据的宏
选择工具菜单宏录制宏,跳出一个对话框,绝对引用选择区域B3:
C7,按Delete键然停止录制
1#SubMacro2()'
Macro2Macro
宏由雨林木风录制,时间:
2010-11-24
2#Range("
3#Selection.ClearContents
4#EndSub
代码解释:
第二行单元格B3:
C7选中;
第三行清除选中的单元格里的数字
4.修改宏:
修改第2个宏
1#Sub汇总()
2#Range("
).Copy
3#Range("
).PasteSpecialPaste:
=xlAdd
4#Application.CutCopyMode=0
5#EndSub
代码解释第二行复制单元格B3:
C7;
第三行把复制的数据选择性粘贴到单元格H3:
I7,Operation:
=xlAdd的意思是选择加;
第四行代码取消复制模式,也就是那个虚线框
5.保存宏
一种是保存在当前工作薄,一种是保存在个人宏工作薄,另一种保存新工作薄
6.自定义按钮
视图菜单工具栏自定义命令选项卡类别宏按住左键不放,把自定义按钮那个笑脸拖到常用工具栏上把光标放在那个笑脸上(前提条件是不要关闭自定义工具栏单击鼠标右键命名更改按钮图像指定宏(指定你要实现的此功能
7.指定宏:
可以把宏指定给图片,自选图形。
第三讲VBA的语法基础
1.数据类型:
学生的姓名,学生的年龄,学生的出生日期(常用数据类型有:
Byte(字节型);
Integer(整型);
Long(长整型);
Single(单精度浮点型,7位有效数字);
Double(双精度浮点型,有效数字15位);
String(字符串型);
对象型(例如单元格区域和工作表);
Variant(变体型,也叫万能的类型)
2.变量:
变量可以使程序变得更加富有活力
(1).变量名称要注意几点:
A.不能把关键字做变量名
B.部分符号不能在变量中出现,如(#*%!
)
C.不区分大小写,但我们一般大小写混写,第一个字母大写,其它的小写。
D.也可以使用中文名称,但是尽量不用中文名称,如果在英文版会报错。
(2)变量声明(电脑里划出一个储存区域来储存变量的值,变量的声明就决定了变量的大小,而大小就是我们前面讲的数据类型决定的)
(3)变量的声明方式
A.语法格式:
Dim变量as数据类型.如DimiasInteger
B.也可以一行定义多个变量,之间用逗号分开
如DimiAsInteger,FAsString,DAsLong
(4).强制声明:
变量使用前声明是一个好习惯,由于VBA里可以不声明变量,因此用户会忘记这一点,所以我们要求变量进行强制声明(工具菜单==选项==编辑器==要求声明变量)
(5)变量的作用域:
A.过程级变量
B.模块级变量
c.全局级变量
3.运算符和表达式:
(1).算术运算符:
有+,-,*,/,&
(2).比较运算符:
=,<
>
>
=,Like
(3).逻辑运算符:
And,Or,Not
(4)表达式:
右边的值赋给运算符左边的
第四讲Range对象
Range对象是Excel应用程序中最常用的对象,一个Range对象代表一个单元格、一行、一列、包含一个或者更多单元格区域(可以是连续的单元格,也可以是不连续的单元格)中选定的单元格,在操作Excel内的任何区域之前都需要将其表示为一个Range对象,然后使用该Range对象的方法和属性。
1.单元格的引用方法及应用
在VBA中经常需要引用单元格或单元格区域,主要有以下几种方法。
1)使用Range属性
VBA中可以使用Range属性返回单元格或单元格区域,如下面的代码所示。
1#Sub选择1()
2#
Sheet1.Range("
A1:
D9,D1:
D9"
3#EndSub
第二行单元格A1:
D9和单元格D1:
D9同时选中
“选择1”过程使用Select方法选中A1:
A9,D1:
D9单元格区域。
Range属性返回一个Range对象,该对象代表一个单元格或单元格区域,语法如下:
Range(Cell1,Cell2)
参数Cell1是必需的,必须为A1样式引用的宏语言,可包括区域操作符(冒号)、相交区域操作符(空格)或合并区域操作符(逗号)。
也可包括美元符号(即绝对地址,如“$A$1”)。
2)使用Cells属性
使用Cells属性返回一个Range对象,如下面的代码所示
Sub输数字1()
DimIAsInteger
ForI=1To10
Sheet1.Cells(I,1)=I
NextI
EndSub
代码解析:
“
输数字1”过程使用For...Next语句为工作表中的A1:
A10单元格区域填入序号1到10。
Cells属性指定单元格区域中的单元格,语法如下:
Cells(RowIndex,ColumnIndex)
参数RowIndex是可选的,表示引用区域中的行序号。
参数ColumnIndex是可选的,表示引用区域中的列序号。
如果缺省参数,Cells属性返回引用对象的所有单元格。
Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循环
3)使用快捷记号
在VBA中可以将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样就不必键入单词“Range”或使用引号,如下面的代码所示。
Sub输字2()
[A1:
A10]="
佛山小老鼠"
“输字2”过程使用快捷记号为单元格区域赋值。
第2行代码使用快捷记号将活动工作表中的A1:
A10单元格赋值为”佛山小老鼠”
注意使用快捷记号引用单元格区域时只能使用固定字符串而不能使用变量。
4)使用Offset属性
可以使用Range对象的Offset属性返回一个基于引用的Range对象的单元格区域,如下面的代码所示。
Sub输数字3()
A10"
).Offset(1,1)=2
“输数字3”过程使用Range对象的Offset属性选中A1:
A10单元格偏移一行一列后的区域B2:
B11,且在B2:
B11输入了数字2
应用于Range对象的Offset属性的语法如下:
expression.Offset(RowOffset,ColumnOffset)
参数expression是必需的,该表达式返回一个Range对象。
参数RowOffset是可选的,区域偏移的行数(正值、负值或0(零))。
正值表示向下偏移,负值表示向上偏移,默认值为0。
参数ColumnOffset是可选的,区域偏移的列数(正值、负值或0(零))。
正值表示向右偏移,负值表示向左偏移,默认值为0。
5)使用Resize属性
使用Range对象的Resize属性调整指定区域的大小,并给单元格区域赋值,如下面的代码所示。
Sub输数字4()
A1"
).Resize(3,3)=“佛山小老鼠”
6)使用Union方法
使用Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作,如下面的代码所示。
Sub输数5()
Union(Sheet1.Range("
A9"
),Sheet1.Range("
D1:
D9,G1:
G9"
))="
也可以用代码
SubAA()
Range("
D9,D1:
)="
EndSub,
不过要记得中间是用逗号分开,只能是一对双引号
“输数字4”过程给单元格区域A1:
A9和D1:
G9所组成的区域赋值为”佛山小老鼠。
Union方法返回两个或多个区域的合并区域,语法如下:
expression.Union(Arg1,Arg2,...)
其中参数expression是可选的,返回一个Application对象。
参数Arg1,Arg2,...是必需的,至少指定两个Range对象。
7)使用UsedRange属性
使用UsedRange属性返回指定工作表上已使用单元格组成的区域,如下面的代码所示。
Sub选择2()
Sheet1.UsedRange.Select
“选择2”过程使用UsedRange属性选择工作表上已使用单元格组成的区域,包括空单元格。
8)Cells(数字),一个单元格有一个数字代表,因为一行有256个单元格,257就是第二行的第一个单元格如
Cells(257)="
小老鼠"
第五讲VBA语句
(一)
一.WithEndWith可以对代码进行精减
精简前的如下
3#'
宏由999宝藏网录制,时间:
2011-2-8
4#Selection.Font.Bold=True
5#WithSelection.Font
6#.Name="
宋体"
7#.Size=18
8#.Strikethrough=False
9#.Superscript=False
10#.Subscript=False
11#.OutlineFont=False
12#.Shadow=False
13#.Underline=xlUnderlineStyleNone
14#.ColorIndex=xlAutomatic
15#EndWith
16#Selection.Font.ColorIndex=3
17#EndSub
第4行代码选中字体加粗;
第五行到15中间用了一个WithEndWith语句;
第6行字体为宋体;
第7行字体大小为18磅,Size是大小的意思;
第8行Strikethrough是删除线的意思;
第9行代码Superscript是上标的意思;
第10行代码Subscript是下标的意思;
第11行OutlineFont字体空心的意思;
第12行代码Shadow是阴影的意思;
第13行代码是下划线类型为无;
14行字体的颜色为自动
精简后的如下
2#WithSelection.Font
3#.Name="
4#.Size=18
5#.Bold=True
6#.ColorIndex=3
7#EndWith
第2行选中的单元格字体进行设置;
第3行代码字体为宋体;
第4行代码字体大小为18磅;
第5行代码字体加粗;
第6行代码字体颜色为红色
二.IfThen判断语句(单行结构)
1#Sub按钮1_单击()
2#IfRange("
a1"
).Value>
=60Then
3#Range("
b1"
及格"
4#EndIf
5#EndSub
第2行代码判断,如果A1单元格的值大于等于60,那么;
第3代码在单元格B1输入及格
三.IfThenElse(简单的多行分支结构)
1#Sub按钮1_单击()
2#IfRange("
).Value<
60Then
3#Range("
B1"
).Value="
不及格"
4#Else
5#Range("
6#EndIf
7#EndSub
第2行代码判断,如果A1单元格的值小于60,那么;
第3行代码给单元格B1赋值为”不及格”;
第4行代码是否则;
第5行代码给单元格B1赋值为”及格”
四.IfThenElseIfThen(ElseIfThen…)Else复杂的多行分支结构
1#Sub加循环的复杂的多行分支结构()
2#DimIAsInteger
3#ForI=2To11
4#IfRange("
A"
&
I)<
5#Range("
B"
I)="
6#ElseIfRange("
70Then
7#Range("
8#ElseIfRange("
80Then
9#Range("
良好"
10#Else
11#Range("
优秀"
12#EndIf
13#NextI
14#EndSub
第2行定义变量I为整型;
第3行代码到13行代码用了一个循环语句ForNext;
第4行代码判断A列从A2开始到A11的值是否小于60;
第5代码如果第4代码小于60,那么对应的B列从B2开始到B11单元格显示不及格,同理第6行,第7行,第8行,第9行代码。
五.Inputbox和Msgbox函数
2#OnErrorResumeNext
3#Application.DisplayAlerts=0
4#Sheet1.Delete
5#Application.DisplayAlerts=1
6#ANS=MsgBox("
只剩下最后一张工作表了,不能删除"
48,"
佛山小老鼠提醒你"
7#EndSub
第2行过程中有错语就忽掉;
第3行阻止弹出保存提示对话框;
第4行代码工作表1删除;
第5行代码还原第3行代码,这两个是一对一对的用;
第6行代码用输出函数MsgBox弹出提示
2#S=InputBox("
请输入姓名"
"
输入提醒"
)=S
4#EndSub
:
第2行用输入函数InPutbox提醒输入姓名且把其输入的值赋给S;
第3行代码把S赋给单元格A1
第六讲VBA语句
(二)
一.ForNext语句
2#DimIAsByte,CAsInteger
3#ForI=1To100
4#C=C+I
5#NextI
6#MsgBoxC
第2行定义变量I为字节型,C为整型;
第3行代码到第5行用了一个循环语句ForNext,给I赋值,赋值范围从1到100;
第4行代码累加;
第6行代码用输出函数MsgBox显示最后累加的C
二ForEachNext语句
2#DimRGAsRange
3#ForEachRGInRange("
A10,D1:
D10"
4#C=C+RG
5#NextRG
7#EndSub
第2行代码定义变量RG为对象型,单元格对象型;
第3代码到第5行代码用了一个循环语然ForEachNext语句,以RG在单元格区域A1:
D10中循环一次;
第4行代码,把单元格RG的值累加;
三.SelectCase语句
1#Subaa()
2#DimIAsInteger
3#ForI=2To7
4#m=Sheet1.Range("
a"
I)
5#SelectCasem
6#CaseIs>
=80
7#Sheet1.Range("
b"
8#CaseIs>
=70
9#Sheet1.Range("
10#CaseIs>
=60
11#Sheet1.Range("
12#CaseElse
13#Sheet1.Range("
14#EndSelect
15#NextI
16#EndSub
第2行定义变量I为整型;
从第3行到15行用了一个循环语句ForNext,给I赋值从2到7;
第4行代码把工作表1从A2开始到A7的值赋给m;
从第5行代码到14行代码用了SelectCaseEndSelect语句
第七讲错误处理和代码调试
一错误类型(语法错误,编译错误,运行错误,逻辑错误)
A.语法错误(把关键字写错,把Dim写成Dam)
B.编译错误(If后面没有Then就换行)
C.运行错误(比方说0不能作为除数,运行是就会报错)
D.逻辑错误(运行的结果和我们预期的发生了偏差
1#Sub除数为0()
2#A=Range("
3#B=Range("
4#C=A/B
5#MsgBoxC
6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 新手入门 教材
![提示](https://static.bdocx.com/images/bang_tan.gif)