VBA入门

Download vba eBook

备注

本节概述了vba是什么,以及开发人员可能想要使用它的原因。

它还应该提到vba中的任何大型主题,并链接到相关主题。由于vba的文档是新的,您可能需要创建这些相关主题的初始版本。

版本

Office版本发行日期备注发布日期
VBA6 ? - 2007年 [后一段时间] [1] 1992年6月30日
VBA7 2010年 - 2016年 [blog.techkit.com] [2] 2010-04-15
适用于Mac的VBA 2004年,2011年 - 2016年 2004-05-11

在Microsoft Office中访问Visual Basic编辑器

您可以通过按Alt + F11或转到“开发人员”选项卡并单击“Visual Basic”按钮,在任何Microsoft Office应用程序中打开VB编辑器。如果在功能区中未看到“开发人员”选项卡,请检查是否已启用此选项卡。

默认情况下,Developer选项卡被禁用。要启用“开发人员”选项卡,请转到“文件” - >“选项”,然后在左侧列表中选择“自定义功能区”。在右侧的“自定义功能区”树视图中,找到“开发人员”树项,并设置“检查开发人员”复选框以进行检查。单击“确定”关闭“选项”对话框。

文件选项菜单

现在可以在功能区中看到“开发人员”选项卡,您可以在其中单击“Visual Basic”以打开Visual Basic编辑器。或者,您可以单击“查看代码”以直接查看当前活动元素的代码窗格,例如WorkSheet,Chart,Shape。

Developer Tab

VBE

您可以使用VBA自动执行几乎所有可以交互(手动)执行的操作,还可以提供Microsoft Office中不可用的功能。 VBA可以创建文档,向其添加文本,格式化,编辑和保存文档,所有这些都无需人工干预。

调试

调试是一种非常强大的方法,可以仔细查看并修复错误的工作(或非工作)代码。

逐步运行代码

在调试过程中,您需要做的第一件事是在特定位置停止代码,然后逐行运行代码以查看是否发生了预期的情况。

  • 断点( F9 ,调试 - 切换断点):您可以向任何已执行的行添加断点(例如,不对声明),当执行到达该点时停止,并为用户提供控制。
  • 您还可以将Stop 关键字添加到空行,以使代码在运行时停止在该位置。例如,如果在声明行之前无法使用F9添加断点,这将非常有用
  • 步入( F8 ,调试 - 步入):只执行一行代码,如果这是一个用户定义的子/函数的调用,那么它是逐行执行的。
  • 跳过( Shift + F8 ,调试 - 跳过):执行一行代码,不进入用户定义的子/函数。
  • 退出( Ctrl + Shift + F8 ,调试 - 退出):退出当前子/功能(运行代码直到结束)。
  • 运行到光标( Ctrl + F8 ,调试 - 运行到光标):运行代码,直到到达光标所在的行。
  • 您可以使用Debug.Print 在运行时将行打印到立即窗口。您也可以使用Debug.? 作为Debug.Print 的快捷方式

手表窗口

逐行运行代码只是第一步,我们需要了解更多细节,其中一个工具是监视窗口(View - Watch窗口),在这里您可以看到已定义表达式的值。要将变量添加到监视窗口,请执行以下任一操作:

  • 右键单击它,然后选择“添加手表”。
  • 在监视窗口中单击鼠标右键,选择“添加监视”。
  • 转到调试 - 添加手表。

添加新表达式时,您可以选择是仅查看其值,还是在代码执行时或在其值发生更改时中断代码执行。

即时窗口

即时窗口允许您通过在Print 关键字或单个问号“ ? ”之前执行任意代码或打印项目。

一些例子:

  • ? ActiveSheet.Name - 返回活动工作表的名称
  • Print ActiveSheet.Name - 返回活动工作表的名称
  • ? foo -返回的值foo *
  • x = 10x 到10 *

*通过立即窗口获取/设置变量值只能在运行时进行

调试最佳实践

每当你的代码没有按预期工作时,你应该做的就是仔细阅读它,寻找错误。

如果这没有用,那就开始调试吧;对于简短的程序,逐行执行它可能是有效的,对于较长的程序,您可能需要在观察的表达式上设置断点或中断,这里的目标是找到不按预期工作的行。

一旦你得到了给出错误结果的行,但原因尚不清楚,尝试简化表达式,或用常量替换变量,这有助于理解变量的值是否错误。

如果你仍然无法解决它,并寻求帮助:

  • 尽可能包含代码的一小部分,以便了解您的问题
  • 如果问题与变量的值无关,则用常量替换它们。 (所以,而不是Sheets(a*b*c+d^2).Range(addressOfRange)Sheets(4).Range("A2")
  • 描述哪一行给出了错误的行为,以及它是什么(错误,错误的结果......)

第一个模块和Hello World

要首先开始编码,您必须右键单击左侧列表中的VBA项目并添加新模块。您的第一个Hello-World代码可能如下所示:

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub
 

要测试它,请点击工具栏中的Play -Button或只需按F5键即可。恭喜!您已经构建了自己的第一个VBA模块。

Stats

657 Contributors: 17
Tuesday, June 13, 2017
许可下: CC-BY-SA

不隶属于 Stack Overflow
Rip Tutorial: info@zzzprojects.com

下载电子书