菜鸟也懂VBA-excle2007VBA入门教程(8)
为字节型 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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




