Excel 2007 VBA 教程
Sub test1()
Range(\End Sub Sub test2()
Range(\End Sub Sub test3()
Range(Cells(1, 1), Cells(9, 4)) = 5 End Sub Sub test4()
Range([A1], [D9]) = 6 End Sub Sub test5()
Selection = 7 End Sub Sub test6()
ActiveSheet.UsedRange = 8 '注意一定要在UsedRange前加父对象 End Sub Sub test7()
Range(\'表示选中和A1单元格相连接的所有单元格,这个连接是指有数据的连接 End Sub Sub test8()
Application.Union([A1], [C1], [E1], [G1]).Select '表示同时选中A1,C1,E1,G1单元格 End Sub Sub test9()
' Intersect方法经常用到了,有时可能用户选择了整列,而这一列有数据的单元格不多,代码里用
'了循环语句,如果不用Intersect这个来选择区域,运行程序时可能就出现Excel程序卡死 Application.Intersect(ActiveSheet.UsedRange, Selection).Select End Sub
Sub test10()
'Resize属性常用在数组转置,有时不确定区域有多大,就会用Resize来填充数据 '格式:单元格对象.Resize(行数,列数)
Range(\表示从D1单元格开始,向下总共有9行,当然包括D1在内, '向右总共二列,当然也包括D列在内,最后得列一个D1到E9的一个区域 End Sub
三、行和列的引用方式
1) 用Range来表示行和列 Sub test1()
Range(\表示第一行被选中 End Sub Sub test2()
Range(\表示第5行到第9行被选中 End Sub Sub test3()
第 13 页 共 52 页
Excel 2007 VBA 教程
Range(\表示A列到D列被选中 End Sub Sub test7()
Range(\表示D9单元格所在的行,也就是第9行 End Sub
Sub test8()
Range(\表示D9单元格所在的列,也就是第4列 End Sub
2) 用Rows和Columns表示行和列 Sub test4()
Rows(\可以不加双引号,也可以加双引号 End Sub Sub test5()
Rows(\表示1行到4行被选中,记得要加双引号 End Sub Sub test6()
Dim i As Integer i = 9
Rows(\表示1行到9行被选中 End Sub Sub test9()
Rows.Select '表示工作表中所有的行被选中,也就是全选工作表 End Sub
Sub test10()
Columns.Select '表示工作表中所有的列被选中,也就是全选工作表 End Sub
四、用Offset属性来引用单元格
1) 单元格对象.Offset(偏移行数,偏移列数),备注:往左往上就是负数,往右往下就是正数 2) 实例 Sub test()
Range(\单元格B1被选中 End Sub 五、定位单元格
1) 定位到A列最后一个有数据的单元格 Sub MyRow()
i = Cells(Rows.Count, 1).End(xlUp).Row MsgBox i End Sub
2) 定位到第一行最后一个有数据的单元格 Sub MyCol()
i = Cells(1, Columns.Count).End(xlToLeft).Column MsgBox i End Sub
第 14 页 共 52 页
Excel 2007 VBA 教程
第五讲 VBA语句
前面一讲我们学习了单元格的引用,这一讲我们来学习VBA里的语句,VBA里的语句有好多,下面把一些常用的讲一下
一、输入语句
1) 用Inputbox函数实现 A. Inputbox函数有七个参数,主要我们理解前面三个参数,第一个参数是“提示语”第二参数是标题,
第三参数是输入框中的默认值 B. 实例
Sub test1() '这个程序有时会报错 Dim i As Single, S As Single
r = InputBox(\请输入圆的半径\圆半径\空\ S = 3.14 * r ^ 2
MsgBox \圆的面积是:\End Sub
Sub test2() '这个程序是完善的,不会报错 Dim i As Single, S As Single
r = InputBox(\请输入圆的半径\圆半径\ If r = \ S = 3.14 * r ^ 2
MsgBox \圆的面积是:\End Sub
2) 用InputBox方法实现 A. InputBox方法有8个参数,主要我们理解前三个参数和最后一个参数,第一个参数是“提示语,第
二参数是标题,第三参数是输入框中的默认值,第八参数是指返回的数据类型 B. 实例
'用InputBox方法实现
Sub test3() '这个程序是完善的,不会报错
Dim i As Single, S As Single '定义变量i,S为单精度型数据类型 r = InputBox(\请输入圆的半径\圆半径\弹出输入对话框 If TypeName(r) = \
'如果对话框点了取消或者点了关闭以及没有填数据就退出程序, S = 3.14 * r ^ 2 '面积公式 MsgBox \圆的面积是:\End Sub
Sub test4() '这个程序有时会报错
Set rg = Application.InputBox(\请选择你要查找的区域\查找区域\ rg.Value = \老鼠\End Sub
Sub test5() '这个程序是完善的,不会报错,如果第八参数为8,那么用 On Error GoTo 100来防错了 Dim rg As Range '定义rg为单元格对象变量
On Error GoTo 100 '如果遇到错误,就跳到100那一行
Set rg = Application.InputBox(\请选择你要查找的区域\查找区域\ ' 把选中的区域赋值给rg
rg.Value = \老鼠\给rg赋值为小老鼠 100:
第 15 页 共 52 页
Excel 2007 VBA 教程
End Sub
二、输出语句
1) 用函数Msgbox实现 A. 函数Msgbox有五个参数,主要理解第一个参数是“提示”,第二参数是“对话框的图标和按钮的数
目和形式”,且用数字代替时,那些数字是可以相加了,第三参数是对话框的标题 B. 第二参数对照表
常数 vbOKOnly VbOKCancel
值 0 1
描述
只显示 OK 按钮。
显示 OK 及 Cancel 按钮。
显示 Abort、Retry 及 Ignore 按钮。 显示 Yes、No 及 Cancel 按钮。 显示 Yes 及 No 按钮。 显示 Retry 及 Cancel 按钮。 显示 Critical Message 图标。 显示 Warning Query 图标。 显示 Warning Message 图标。 显示 Information Message 图标。
VbAbortRetryIgnore 2 VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation
C.
3 4 5 16 32 48 64
实例
Sub test1()
MsgBox \你好\问候\End Sub Sub test2()
MsgBox \你好\问候\为什么加4呢、看一下第二参数的对照表就明白了,因为要两个按钮 End Sub Sub test3()
ant = MsgBox(\你去过学校吗?\问候\ If ant = vbYes Then MsgBox \我去过了\ Else
MsgBox \天下雨,我没有去\ End If End Sub
三、With 语句
第 16 页 共 52 页
Excel 2007 VBA 教程
With语句的作用是精简代码,提高运行速度,如果我们多次读取对象影响运行的速度的。 1) 实例
Sub test()
With Range(\对A1单元格进行处理 .Font.ColorIndex = 3 '字体颜色为红色 .Interior.ColorIndex = 5 '底纹为蓝色 .Font.Size = 48 '字号为48
.Font.Name = \华文行楷\字体为华文行楷\ End With '结束处理 End Sub Sub test1()
Range(\清除A1格式 End Sub
四、条件判断语句
条件判断语句在编写代码用的比较多,主要有 1) if…then
Sub test1()
If Range(\单元格没有填好数据\温馨提示\End Sub
2) if…then…end if
Sub test2()
If Range(\
MsgBox \单元格没有填好数据\温馨提示\ End If End Sub
3) if…then…else…end if
Sub test3()
If Range(\
MsgBox \单元格没有填好数据\温馨提示\ Else
MsgBox \单元格的数据是:\ End If End Sub
4) if…then…elseif…then…else…end if
Sub test4() '只能判断一个
If Range(\如果C3单元格小于60,那么 Range(\不及格\单元格显示不及格
ElseIf Range(\又如果C3单元格小于70,那么 Range(\及格\单元格显示及格
ElseIf Range(\又如果C3单元格小于80,那么 Range(\良好\单元格显示良好 Else '否则
Range(\优秀\单元格显示优秀 End If End Sub
5) select case…case…end select
第 17 页 共 52 页
excel2007VBA教程
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)