VBA系列(1)——VBA基础知识

由于工作需要和个人爱好,这些年写了一些VBA程序,但总是遇到问题后到网上搜索相应解决方法,所以一直没有系统的学习VBA。希望通过一系列的博客文章,把VBA的知识梳理一遍,系统地掌握VBA知识。

VBA 为英文Visual Basic for Application的缩写,为Microsoft在1994年发布的Excel 5上开始使用的一种通用应用软件脚本语言。Excel包含和 许多功能强大的数据分析对象,例如工作表、图表、数据透视表以及大量的数学、财务、工程和通用业务函数,配合VBA可以运用这些对象开发出自动程序。

以下简单总结了VBA的基础知识【1】

  • 代码: 通过执行 VBA代码,在VBA中完成动作 。代码由编写或宏录制生成,代码存储在VBA模块中。

  • 模块: VBA模块存储在Excel工作簿文件中,但通过使用Visual Basic编辑器(VBE)可以查看或编辑模块。VBA模块由一些过程组成。

  • 过程: 基本上,过程就是执行某些动作的计算机代码单元。VBA支持两种过程:Sub过程和 Function过程。

    • Sub过程:·Sub过程由一系列语句组成,可通过多种方法来执行这种过程。以下为简单的Sub过程的例子,称为Test:这是个简单的求和过程,然后将结果显示在消息框中。
Sub Test()
	Sum = 1 + 1
	MsgBox "The answer is " & Sum
End Sub
  • Function过程:Function过程返回一个值(也可能是一个数组)。可以从另外一个VBA过程中调用Function过程,也可以在工作表中使用Function过程。下面列举一个Function过程的实例,该过程命名为AddTwo:
Function AddTwo(arg1, arg2)
	AddTwo = arg1 + arg2
End Function
  • 对象: VBA可以处理包含在宿主应用程序中的对象(这种情况,Excel是宿主应用程序)。Excel提供了可以处理的100多种类的对象。对象的示例包括工作簿、工作表、工作表上的单元格区域、图表及形状。对象是按照层次结构的方式排列的。
    对象可以充当其他对象的容器。例如,Excel是一个称为Application的对象,它包含了其他对象,如Workbook对象。Workbook对象可以包含其他的一些对象,如Worksheet对象和Chart对象。一个Worksheet对象可以包含诸如Range对象、PivotTable对象之类的对象。这些对象的排列模式称为Excel的对象模型。

  • 集合: 类似的对象形成集合。例如,Worksheets集合由特定工作簿中的所有工作表组成。集合本身也是对象。

  • 对象的层次结构: 当引用一个对象的时候,通过在容器和成员之间使用句点作为分隔符来指定它在对象层次结构中的位置。例如,可引用名为Book1.xlsx的工作簿:

Application.Workbooks("Book1.xlsx")

这样就可以引用位于Workbooks集合中的Book1.xlsx工作簿。Workbooks集合包含在Excel的Application对象中。将其延伸到另一个层次上,就可以引用Book1工作簿中的Sheet1工作表:

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1")

还可以继续延伸到下一层,按照如下方式引用某个特定的单元格:

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1")
  • 活动对象: 如果省略对摸个对象的特殊引用,那么Excel将使用当前活动的对象。如果Book1是活动的工作簿,那么上述引用可以简化为
Worksheets("Sheet1").Range("A1")

如果知道工作表Sheet1是活动工作表,那么甚至可以继续简化这个引用:

Range("A1")
  • 对象属性: 对象都有属性。可认为一个属性就是对某个对象的一个设置。 例如,Range的属性包括Value和Address等。 Chart对象包括诸如HasTitle和Type之类的属性。可以使用VBA来确定对象的属性,还可以对这些属性进行更改。一些属性是只读属性,不能通过使用VBA更改。
    引用属性时,要将对象和属性结合在一起引用,用句点分隔开。例如,可以按照如下的方式引用Sheet1工作表的单元格A1中的值:
Worksheets("Sheet1").Range("A1").Value
  • VBA 变量: 可以给VBA变量赋值。可将变量看成用来存储某个特殊值的名称。使用如下列VBA语句可将工作表Sheet1的单元格A1中的值赋给变量Interest:
Interest = Worksheets("Sheet1").Range("A1").Value
  • 对象方法: 对象都有方法。一个方法就是指与对象一起执行的一个动作。例如,Range对象的其中一个方法为ClearContents。该方法将清除单元格区域的内容。
    指定方法时,将对象和方法结合在一起进行指定,用句点隔开。例如,要清除活动工作表的单元格A1的内容,可以使用下列语句:
Range("A1").ClearContents
  • 标准的程序设计构件: VBA还包括现代编程语言的所有构件,其中包括数组、条件语句和循环等。
  • 事件: 有些对象可以辨别出具体的事件,开发人员可以在编写在事件发生时执行的VBA代码。例如,打开一个工作簿后将触发Workbook_Open事件。如果修改工作表中的单元格,将触发Worksheet_Change事件。

参考文献:
【1】《中文版Excel2013高级VBA编程宝典(第7版)》,著:John Walkenbach,译:张慧娟,清华大学出版社

你可能感兴趣的:(Excel,VBA基础知识)