调试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代码相关推荐

  1. 如何调试Excel VBA代码

    Excel VBA出错时给出的错误信息极少,需要充分利用各种工具来进行调试. 1.编译错误 常见的编译错误有: 错误的源代码格式,比如if后面缺少then:在编辑器中该行会变成红色. 错误的语法结构, ...

  2. 编写高效Excel VBA代码的最佳实践(一)

    很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快.下面搜集了一些使Excel VBA代码运行更快的技术和技巧,基本上都是实践经验的总结.如果您还有其它优化Excel VBA ...

  3. Excel VBA代码学习

    艺思网    http://www.edusrc.com  提供中学教学资料下载 很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快.下面搜集了一些使Excel VBA代码运 ...

  4. 经典Excel VBA代码

    经典Excel VBA代码 Application(Excel程序)篇 Application.EnableEvents =   True /   False  '启用 / 禁用所有事件 Applic ...

  5. 转:经典Excel VBA代码

    VBA基础在大家的关注声中即将告一段落了,有许多经典的VBA操作我们只是作了简要的介绍,想要熟练地使用VBA还需要大家慢慢地去消化和吸收,然后在实践中总结和提高.最后我们收集了常见的VBA代码以飨广大 ...

  6. Excel VBA代码密码破解

    1.查看VBA代码,有密码  2.破解密码: 2.1:修改文件名后缀,修改为压缩包格式 2.2:打开压缩包文件,找到文件:vbaProject.bin 2.3:把这个文件从压缩包中拖出来 2.4:打开 ...

  7. 13,excel vba 代码的简化和重复使用_初识对像

    作为一个人. 我们知道人具有自己的属性和动作. 比如头发是黑色的.  眼晴是黑的. 牙可能也是黑的. 然后我们也会有做一些动作 , 比如放声歌唱, 或者吃一些东西. 对像就是具有自己属性和可以执行一些 ...

  8. Excel VBA代码示例

    '将选定的单元格区域里面的单元格的值拼接到一起,使用spliter分隔,默认使用逗号分隔 'mRange:单元格区域 'spliter:拼接两个单元格时的分隔字符串 Function joincell ...

  9. 第一章、Excel VBA基础知识

    01-01.Excel VBA简介 1.VBA是什么,能干什么 VBA可以说是一种编程语言,是VB的分支 VBA的作用,可以将重复的Excel工作简单化 2.VBA具备的基础知识 2.1基础操作,能发 ...

最新文章

  1. 一个已经存在 10 年,却被严重低估的库!
  2. 实现AGI,强化学习就够了?Sutton:奖励机制足够实现各种目标
  3. 新冠肺炎的可视化和预测分析(附代码)
  4. 设计师电脑推荐笔记本_笔记本电脑选购推荐全攻略
  5. c语言随机数循环延迟,C语言生成随机数的函数、延时函数
  6. 数据结构与算法 Python语言描述 笔记
  7. uva-465(overflow)
  8. python中监控错误的语句_Python学习_07_错误、异常
  9. kong 网关教程入门
  10. XamlReader 动态加载XAML
  11. memcached在Java中的应用以及magent的配置-每天进步一点点
  12. 【图像提取】基于matlab形态学矩阵块+线段提取【含Matlab源码 1014期】
  13. 7种方式实现3栏布局
  14. 西安翼迅网络的破解尝试
  15. BlackBerry 7290
  16. 解决WPS页码上有小横线问题
  17. 计算机内部数据的传输 进制,计算机内部数据加工处理和传送的形式是什么
  18. 品鑒「天籁般的印第安音乐,每次聆听都是一场心灵的洗礼」2019年 06月27星期四
  19. 【Android】debug 状态下其签名文件 debug.keystore 相关(如何获得该文件,其密码,获取其sha1、MD5等)
  20. pytorch中的value, top = prob.topk(1, dim=1, largest=True, sorted=True)

热门文章

  1. CentOS6.5 gcc升级到4.8.2
  2. EBS R12.2 ADOP (R12.2 AD Online Patching) - 5
  3. struts配置详解
  4. linux之SQL语句简明教程---AND OR
  5. LoadRunner的Socket脚本关联小技巧
  6. SoaBox 1.1.6 GA 发布,SOA 模拟环境
  7. SQL基础--层次化查询(START BY ... CONNECT BY PRIOR)
  8. maven scope 属性和生命周期
  9. logback输出日志到sentry
  10. facebook海量图片存储系统与淘宝TFS系统比较