调试Excel VBA代码
调试Excel VBA代码
目录
1编译错误
2运行中出错或者运行结果错误
Excel VBA出错时给出的错误信息极少,需要充分利用各种工具来进行调试。
1.编译错误
常见的编译错误有:
错误的源代码格式,比如if后面缺少then:在编辑器中该行会变成红色。
错误的语法结构,比如if和end if没有对应上:代码运行前会给出编译错误提示。
类型不匹配:函数输入的参数与定义时的参数类型不同时会出现该类错误。
变量未定义:指使用了没有申明的变量类型(当Option Explicit时)
建议:
格式规范化,严格缩进。VBA插件Smart Indent是一个很好的辅助工具。这样做让源代码更具备可读性,从而更快检测源代码格式和语法结果错误,。
勾选上“工具——选项——编译器——要求变量声明”,或者在每个代码模块最前面手工加上 Option Explicit 。在代码编辑中,很多错误只是因为手误,这个选项会让编译器强制检查变量申明,从而在编译时便发现错误。
2.运行中出错或者运行结果错误
当程序编译没有问题,但运行中出错或者运行的结果与想象中不符,就需要用到VBA的调试功能。下面是VBA提供的几个重要的调试功能,这些功能能让程序停在某些特定的位置上等待检查:
F9:设置程序断点,在代码左侧栏点击有相同效果。重新按F9即取消断点。
F8:单步跟踪,当调用子函数会跟踪到子函数内部
Shift+F8:单步跟踪,但不会进入子函数内部
Ctrl+Shift+F8:跳出正在跟踪的函数,直接返回上一层函数。
F5:运行程序,直到出现错误、程序结束或程序断点为止
Ctrl+F8:运行程序,直到出现错误、程序结束、程序断点或当前光标所在行为止
debug.print var:在立即窗口中显示var的值
debug.assert var:当var==false时程序自动停止
以上命令也可在菜单和命令栏中获取。
在调试过程中,可通过下面几种方法查看各个变量的值,当变量和预期不一样时,也就找到了程序出错的原因,便能对照修改:
立即窗口(快捷键Ctrl+G):在该窗口里会显示debut.print的结果值,以及随时计算和运行代码。在代码前面添加“?”,可以在立即窗口中显示运行结果。
监视窗口:可以将变量以及表达式添加到监视窗口,可以实时查看变量和表达式的值。支持将代码窗口里的变量和表达式拖入到见识窗口
本地窗口:本地窗口里可以查看目前的local变量和global变量的变量值。
编辑窗口:将鼠标停在编辑窗口的变量上可显示该变量的值。
有一些方法可减少程序错误以及降低调试的难度:
添加重要的代码注释。
源代码格式规范化,增加代码可读性。VBA插件Smart Indent是一个很好的辅助工具。
尽可能声明变量类型,少用Variant变量。
注意函数的参数传递方式,默认为传引用,子函数会修改变量的值。
尽量将功能函数化,不同的功能分开写。
避免在VBA中引用绝对地址,如Range("A1")。可先在Excel中定义名称"abc=$A$1",然后引用Range("abc")。
避免使用ActiveSheet, ActiveWorkbook等可变变量,用Sheet1,ThisWorkbook这种绝对变量。绝对变量不受外界操作影响。
调试Excel VBA代码相关推荐
- 如何调试Excel VBA代码
Excel VBA出错时给出的错误信息极少,需要充分利用各种工具来进行调试. 1.编译错误 常见的编译错误有: 错误的源代码格式,比如if后面缺少then:在编辑器中该行会变成红色. 错误的语法结构, ...
- 编写高效Excel VBA代码的最佳实践(一)
很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快.下面搜集了一些使Excel VBA代码运行更快的技术和技巧,基本上都是实践经验的总结.如果您还有其它优化Excel VBA ...
- Excel VBA代码学习
艺思网 http://www.edusrc.com 提供中学教学资料下载 很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快.下面搜集了一些使Excel VBA代码运 ...
- 经典Excel VBA代码
经典Excel VBA代码 Application(Excel程序)篇 Application.EnableEvents = True / False '启用 / 禁用所有事件 Applic ...
- 转:经典Excel VBA代码
VBA基础在大家的关注声中即将告一段落了,有许多经典的VBA操作我们只是作了简要的介绍,想要熟练地使用VBA还需要大家慢慢地去消化和吸收,然后在实践中总结和提高.最后我们收集了常见的VBA代码以飨广大 ...
- Excel VBA代码密码破解
1.查看VBA代码,有密码 2.破解密码: 2.1:修改文件名后缀,修改为压缩包格式 2.2:打开压缩包文件,找到文件:vbaProject.bin 2.3:把这个文件从压缩包中拖出来 2.4:打开 ...
- 13,excel vba 代码的简化和重复使用_初识对像
作为一个人. 我们知道人具有自己的属性和动作. 比如头发是黑色的. 眼晴是黑的. 牙可能也是黑的. 然后我们也会有做一些动作 , 比如放声歌唱, 或者吃一些东西. 对像就是具有自己属性和可以执行一些 ...
- Excel VBA代码示例
'将选定的单元格区域里面的单元格的值拼接到一起,使用spliter分隔,默认使用逗号分隔 'mRange:单元格区域 'spliter:拼接两个单元格时的分隔字符串 Function joincell ...
- 第一章、Excel VBA基础知识
01-01.Excel VBA简介 1.VBA是什么,能干什么 VBA可以说是一种编程语言,是VB的分支 VBA的作用,可以将重复的Excel工作简单化 2.VBA具备的基础知识 2.1基础操作,能发 ...
最新文章
- 一个已经存在 10 年,却被严重低估的库!
- 实现AGI,强化学习就够了?Sutton:奖励机制足够实现各种目标
- 新冠肺炎的可视化和预测分析(附代码)
- 设计师电脑推荐笔记本_笔记本电脑选购推荐全攻略
- c语言随机数循环延迟,C语言生成随机数的函数、延时函数
- 数据结构与算法 Python语言描述 笔记
- uva-465(overflow)
- python中监控错误的语句_Python学习_07_错误、异常
- kong 网关教程入门
- XamlReader 动态加载XAML
- memcached在Java中的应用以及magent的配置-每天进步一点点
- 【图像提取】基于matlab形态学矩阵块+线段提取【含Matlab源码 1014期】
- 7种方式实现3栏布局
- 西安翼迅网络的破解尝试
- BlackBerry 7290
- 解决WPS页码上有小横线问题
- 计算机内部数据的传输 进制,计算机内部数据加工处理和传送的形式是什么
- 品鑒「天籁般的印第安音乐,每次聆听都是一场心灵的洗礼」2019年 06月27星期四
- 【Android】debug 状态下其签名文件 debug.keystore 相关(如何获得该文件,其密码,获取其sha1、MD5等)
- pytorch中的value, top = prob.topk(1, dim=1, largest=True, sorted=True)
热门文章
- CentOS6.5 gcc升级到4.8.2
- EBS R12.2 ADOP (R12.2 AD Online Patching) - 5
- struts配置详解
- linux之SQL语句简明教程---AND OR
- LoadRunner的Socket脚本关联小技巧
- SoaBox 1.1.6 GA 发布,SOA 模拟环境
- SQL基础--层次化查询(START BY ... CONNECT BY PRIOR)
- maven scope 属性和生命周期
- logback输出日志到sentry
- facebook海量图片存储系统与淘宝TFS系统比较