当前位置:首页 > 2007VBA教程
Excel 2007 VBA 教程
End Sub 三、代码调试
代码调试是一项繁琐的工作,我在编写“Excel完美工具箱”插件时,代码调试有时从晚上11点到早上三四点,长达4-5个小时的调试,当然在调试的时要修改一些代码,代码调试同时也提高自己编程水平,这个我深有体会,如设置断点,在本地窗口查看各变量的情况,然后找到原因在那,在第一讲时,我们简单提过一些,VBA编辑环境中,工作模式可分为三种,设计模式,也就是我们正常编辑代码时,运行模式,就是F5和F8运行时的状态,最后一种是中断模式,当程序遇到错误是程序会自动停止进入中断模式。设置断点,当程序运行到断点处,也会进入中断模式。下面我们讲几种调试的方法 1) 逐语句运行 A. 把光标定位到某一过程的任何一句里,然后按一下F8就会从第一句开始,有黄色颜色标示着第一行,
再按一下F8,黄色颜色从第一行跑到了第二行。也就是每按一次F8就执行一行代码。此时我们就可以查看各变量的情况便于我们查找错误。但逐语句有时太慢了,特别是多层循环语句,我们可以到调试菜单,运行到光标处。当然也可以用“设置断点”下面我们讲解它 B. 设置断点
1. 设置断点的方法有
a) 直接在你要设置断点那一句代码左边边框处,单击一下左键,如图图 14
图 14
b) 11把光标定位到你要设置断点的那一行里,然后按一下F9就可以了 2. 清除断点的方法
a) 直接用左键单击代码边框处那红色圆点,就清除了那一行的断点 b) 如果设置断点多的化,调试菜单下的清除所有断点命令。 3. 设置断点后怎样运行代码
a) 把光标定位到过程中的某一行代码处按快捷F5,再按一下F5就运行到下一个断点。 4. 查看变量情况
a) 把光标移到变量就会显示变量的值,如15
图 15
b) 11在本地窗口查看各变量的情况,这种方法我经常用到,如图
图 16
第 22 页 共 52 页
Excel 2007 VBA 教程
第七讲 工作表对象
一. 工作表的引用
1. 以名称方式引用:Worksheets (\工作表名称\,Worksheets是工作表的集合,包括所有工作表。
(1) 实例
Sub test1() '这是用名称来引用工作表名
Worksheets(\总表\佛山小老鼠\End Sub
2. 以索引号方式引用:Worksheets(数字)或者Sheets(数字),这两者的区别在前面的课程里提过,Sheets
也是工作表的集合,把其它的工作表也包括在内,如图表工作表,宏表工作表。而Worksheets只包括我平常操作的工作表。如Sheet1,Sheet2 (1) 实例
Sub test2() '这是用索引号来引用工作表名
On Error Resume Next '目的是为了防止此工作簿中没有“佛山小老鼠”这个工作表报错 Application.DisplayAlerts = False '屏蔽询问对话框
Worksheets(\佛山小老鼠\删除“佛山小老鼠”这个工作表 Application.DisplayAlerts = True '打开“询问对话框”
Sheets.Add After:=Worksheets(Sheets.Count) '在最后一张工作表后插入一张新工作表 Worksheets(Sheets.Count).Name = \佛山小老鼠\把最后一张工作表改为“佛山小老鼠” End Sub
3. 其它方式的引用
(1) 用ActiveSheet引用
Sub test3() '用ActiveSheet引用
MsgBox \活动工作表的名字是:\End Sub
二. 添加工作表
1. 添加工作表的方法是Add,其表达式Add(Before/After,Count,Type)。Before前面,After后面,Count
插入的数量,Type是插入的类型,如正常工作表Xlworksheet,图表工作表Xlchart,还有宏表工作表这里就不多说了。如果省略第二参,第三参数就会插入一张正常工作表 (1) 实例 在第一张工作表前面插入5张工作表
Sub test4() '在第一张工作表前面插入5张工作表 Sheets.Add Before:=Worksheets(1), Count:=5 End Sub
三. 删除工作表
1. 按名称来删除 Worksheets(工作表名称).Delete 记得给工作表名加双引号
2. 按索引号来删除 Worksheets(数字).Delete 这个数字就是我们在工作簿看到工作表位置。 3. 用代码删除工作表,会弹出一个“询问对话框”如图 17
图 17
4. 解决询问对话框的问题
其实前面许多实例里我都用了,只是没有和大家说详细,这次和大家讲清楚,用了这下面的代码,
第 23 页 共 52 页
Excel 2007 VBA 教程
Application.DisplayAlerts = False '屏蔽询问对话框 Worksheets(1).Delete '删除第一个工作表
Application.DisplayAlerts = True '打开“询问对话框” 5. 至少要保留一张可见工作表 6. 实例 删除第一个工作表
Sub test1() '会弹出询问对话框的 Worksheets(1).Delete End Sub
Sub test2() '不会弹出询问对话框的 Application.DisplayAlerts = False Worksheets(1).Delete
Application.DisplayAlerts = True End Sub
四. 实例 提取各工作表名制作目录
Sub 提取工作表名()
Dim i As Integer '定义i为整型变量
On Error Resume Next '防止工作簿里没有目录工作表,在删除时报错 Application.DisplayAlerts = False '关闭询问对话框 Worksheets(\目录\删除目录工作表
Application.DisplayAlerts = True '打开询问对话框
Sheets.Add before:=Sheets(1) '在第一个工作表前插入一张新的工作表 Sheets(1).Name = \目录\把第一个工作表取名为“目录”
Cells(1, 1) = \目录\在目录工作表中的A1单元写于“目录”两字
For i = 2 To Worksheets.Count 'Worksheets.Count统计工作的总数,整句代码的意思遍历每一个作表
Cells(i, 1) = Sheets(i).Name '依次把工作表的名字写A列 Next i '下一个i End Sub Sub 清空()
Worksheets(\目录\ Worksheets(\目录\ End Sub
五. 实例 提取各工作表名制作目录且还要建立超链接
Sub 提取工作表名()
Dim i As Integer '定义i为整型变量
On Error Resume Next '防止工作簿里没有目录工作表,在删除时报错 Application.DisplayAlerts = False '关闭询问对话框 Worksheets(\目录\删除目录工作表
Application.DisplayAlerts = True '打开询问对话框
Sheets.Add before:=Sheets(1) '在第一个工作表前插入一张新的工作表 Sheets(1).Name = \目录\把第一个工作表取名为\目录\
Cells(1, 1) = \目录\在目录工作表中的A1单元写于\目录\两字
For i = 2 To Worksheets.Count 'Worksheets.Count统计工作的总数,整句代码的意思遍历每一个作表
Cells(i, 1) = Sheets(i).Name '依次把工作表的名字写A列
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:=\
第 24 页 共 52 页
Excel 2007 VBA 教程
SubAddress:=Worksheets(i).Name & \ '由代码过长,选打一个_然后加一个空格,这是把代码分行
' 根据录制的代码修改,把选中的Selection改为Cells(i,1),把 \改为Worksheets(i).Name & \,一定要是记得是工作表名
'所以加了一个Name属性,把“佛山小老鼠”改为Cells(i, 1).Value Next i '下一个i End Sub Sub 清空()
Worksheets(\目录\ Worksheets(\目录\ End Sub
'这是我们在A1单元格输入“佛山小老鼠”之后录制的一个给它添加超链接的宏得到的宏代码 'Sub Macro1() ''
'' Macro1 Macro '' ' ''
' ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=\' \佛山小老鼠\'End Sub
六. 实例 提取工作表名制目录且要建立超链接还要添加一个“返回目录”的按钮
Sub 提取工作表名()
Dim i As Integer '定义i为整型变量
On Error Resume Next '防止工作簿里没有目录工作表,在删除时报错 Application.DisplayAlerts = False '关闭询问对话框 Worksheets(\目录\删除目录工作表
Application.DisplayAlerts = True '打开询问对话框
Sheets.Add before:=Sheets(1) '在第一个工作表前插入一张新的工作表 Sheets(1).Name = \目录\把第一个工作表取名为\目录\
Cells(1, 1) = \目录\在目录工作表中的A1单元写于\目录\两字
For i = 2 To Worksheets.Count 'Worksheets.Count统计工作的总数,整句代码的意思遍历每一个作表
Worksheets(1).Activate '一定要加上这一句,由于我们为了添加按钮时,把添加按钮的那个工作表设置为活动工作表,添加之后还要把“目录”工作表设置为当前工作表 Cells(i, 1) = Sheets(i).Name '依次把工作表的名字写A列
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:=\
SubAddress:=Worksheets(i).Name & \ '由代码过长,先打一个_然后加一个空格,这是把代码分行
' 根据录制的代码修改,把选中的Selection改为Cells(i,1),把 \改为Worksheets(i).Name & \,一定要是记得是工作表名
'所以加了一个Name属性,把“佛山小老鼠”改为Cells(i, 1).Value ' 添加“返回目录”按钮
'因为2007录制不了艺术字代码,2003和2010可以,下面的代码是我在2003版里录制修改后的 Worksheets(i).Shapes.AddTextEffect(msoTextEffect32, \返回目录\黑体\ msoTrue, msoFalse, 600#, 20.25).Select
第 25 页 共 52 页
共分享92篇相关文档