教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

菜鸟也懂VBA-excle2007VBA入门教程(8)

来源:网络收集 时间:2026-04-01
导读: 为字节型 k = 1 For i = 9 To 1 Step -1 'i从9到1循环 Cells(k, 1) = i '从单元A1开始写于i k = k + 1 Next i '下一个 End Sub 2) For Each…next A. 实例在A1到A9,E3到E9,C3,C7单元格填充红色的底纹 Sub test3(

为字节型 k = 1

For i = 9 To 1 Step -1 'i从9到1循环 Cells(k, 1) = i '从单元A1开始写于i k = k + 1 Next i '下一个 End Sub

2) For Each…next A. 实例在A1到A9,E3到E9,C3,C7单元格填充红色的底纹 Sub test3()

Dim Rg As Range

For Each Rg In Range(\ Rg.Interior.ColorIndex = 3 Next Rg End Sub

3) Do While…Loop A. 实例 在A1到A9单元格里依次输入1到9 Sub test4()

Dim i As Integer i = 1

Do While i < 9

Cells(i, 1) = i i = i + 1 Loop End Sub

Sub test5()’变形的 Dim i As Integer i = 0 Do

Cells(i + 1, 1) = i + 1 i = i + 1 Loop While i < 9 End Sub

4) Do Untile…Loop A. 实例 在A1到A9单元格里依次输入1到9 Sub test6()

Dim i As Integer i = 1

Do Until i > 9

Cells(i, 1) = i i = i + 1 Loop End Sub

备注(代码分换行的方法:如果一行没有写完,要换行。先按一下空格,然后加一个_

第 19 页 共 52 页

Excel 2007 VBA 教程

第六讲 代码调试和错误处理

当一个程序完成后,在编程员手上,能正常运行,但其实工作还有没有结束,特别是复杂的程序,因为这里也许里面还存在一些编程员没有发现的错误,所以当一个软件开发完之后,首先发布的版本是抢鲜版,如现在办公软件Office2013就是,有的是试用版,测试版,都是为了完善程序。一个学程序的人,都会经过这一步的,首先是代码正确,经过一段时间学习之后要保证不同环境和条件下的也能正常运行,也就是所谓的容错,还有就是兼容性,如Excel有2003版,2007版,2010版,程序能否在这个版本里都能正常运行。说了一大堆,其实我个人认为的有些程序调试的时间比写代码的时间还要长,可见这个过程的重要性。因此很有必要学习这一讲。 一、错误类型

1) 语法错误 A. 如函数Msgbox,如果把它的结果赋值给变量Ant,如果不给它的参数加一个括号就会出现红色的字 Sub test1() '这个是正确的表示

MsgBox \不能作为除数\提示\End Sub

Sub test2() '这个是错误的表示

ant = MsgBox\不能作为除数\提示\要给MsgBox里的参数括号括起来,才不会显示红色的字体 End Sub 2) 编译错误 A. 如定义变量,把关键字if定义为变量 Sub test3()

Dim if AS Integer End Sub 3) 运行错误 A. 因为数据类型Integer值的范围是-32768到32767之间的整数,而数据类型Long值的范围是

-2147483648到2147483647,而我们的程序求和已经超出了32767,所以把变量S定义变量类型为Integer不行,要改为Long,所以当程序运行时,报错为“运行时错误,溢出” Sub test4() '这是错误的

Dim i As Integer, s As Integer For i = 1 To 10000 s = s + i Next i

MsgBox \最后结果是:\End Sub

Sub test5() '这是正确的

Dim i As Integer, s As Long For i = 1 To 10000 s = s + i Next i

MsgBox \最后结果是:\End Sub 4) 逻辑错误 A. 实例 在第一个工作表前插入一张新的工作表,且取名为“总表”,第一次运行正常,但再运行一次

时就报错了

Sub test6() '第一次运行正常,再运行一次就报错了 Sheets.Add before:=Worksheets(1)

第 20 页 共 52 页

Excel 2007 VBA 教程

Worksheets(1).Name = \总表\End Sub

Sub test7() '这个不会报错

On Error Resume Next '为了防止在删除之前没有一个叫“总表”的工作表,因为没有我们怎么删除呢?

Application.DisplayAlerts = False '屏蔽询问对话框 Sheets(\总表\删除总表这个工作表 Application.DisplayAlerts = True '开启询问对话框

Sheets.Add before:=Worksheets(1) '在第一个工作表前面插入一个新的工作表 Worksheets(1).Name = \总表\这个新的工作表取名为“总表” End Sub

二、处理错误

1) 预防

比如,0不能作为除数,同样文本也不能作为除数,当单元格为空时,那么其值也算是0,你可能会说,那有那么傻,不可能用文本作为除数呢?有时会发生,所以我们在编程时就要自己先想到用户在操作时会发生什么情况,其实有时自己也没有发现,只有多次测试才能发现。 Sub test9() ' 预防错误,防止了B2单元格没有数据和值是0时

If Range(\单元格是空的或者它的值是0\Sub

s = Range(\ MsgBox \结果是: \End Sub

Sub test10() ' 预防错误,防止了B2单元格没有数据和值是0时,说不定一个用户会输入一个汉字放在B2单元格

'那么怎么办呢,还要加上语句才行 Dim s As Single

If Range(\\单元格是空的或者它的值是0或者是文本\ s = Range(\ MsgBox \结果是: \End Sub

也许你会说,曹老师,不要那么麻烦吧,用On Error Resume Next就解决了,不错,这就是我们下面要讲的忽略错误 2) 忽略错误

Sub test11() ' 忽略错误,但是有一个缺点啊,它最后弹出一个对话框,但是没有值啊?怎么办呢,如果没有下面那个Msgbox函数就OK了

On Error Resume Next '遇到错误断续往下运行 s = Range(\ MsgBox \结果是: \End Sub

3) 引导错误

Sub test12() ' 忽略错误,引导错误的

On Error GoTo 100: '遇到错误跳到100: 处,这样就绕过了Msgbox函数 s = Range(\ MsgBox \结果是: \100:

第 21 页 共 52 页

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. 设置断点后怎样运行代 …… 此处隐藏:1988字,全部文档内容请下载后查看。喜欢就下载吧 ……

菜鸟也懂VBA-excle2007VBA入门教程(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/566040.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)