由于工作需要和个人爱好,这些年写了一些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 + 1MsgBox "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,译:张慧娟,清华大学出版社

VBA系列(1)——VBA基础知识相关推荐

  1. jQuery小测试系列之jQuery基础知识

    日期:2012-4-17  来源:GBin1.com 这是jQuery小测试系列第一部分:基础知识. 来源:jQuery小测试系列之jQuery基础知识

  2. python独立网站教程_python从零到独立建设网站系列教程之基础知识篇(二)

    python从零到独立建设网站系列教程之基础知识篇(二)python的安装在Windows上安装python点击Download链接 然后就是按导航走点击确认,需要注意的是要把python加入到系统变 ...

  3. GNN 系列:Graph 基础知识介绍

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 [导读]图卷积神经网络(Graph Convolutional Network)作为最 ...

  4. 【Linux系列】Linux基础知识整理

    Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...

  5. Web音视频入门系列——音视频基础知识

    前言 21世纪以来,随着网络基础设施的不断完善,3G.4G.乃至现今5G网络的普及,互联网彻底改变了我们的生活.以前在家里看一部电影需要买DVD和播放机,现在直接打开浏览器,进各大视频网站就可以看了, ...

  6. Python复习系列:Python基础知识(三)

    Python基础知识(三) Python基础知识(三) (一)循环结构和选择结构 1. 条件表达式 2. 选择结构 2.1 单分支选择结构 2.2 双分支选择结构 2.3 多分支选择结构 2.4 选择 ...

  7. 硬件设计电源系列文章-LDO基础知识

    目录 概要 整体架构流程 技术名词解释 技术细节 1.半波与全波整流 2.变压器方案 3.线性稳压器的关键参数 小结 概要 提示:这里可以添加技术概要 例如: 本文主要开始讲述电源的发展.从ACDC开 ...

  8. java春招面试冲刺系列:redis基础知识详细解析

    目录 学习计划 学习笔记 百问 redis在什么情况下会变慢? 单线程的redis,如何知道要运行定时任务? 学习计划 Redis的介绍.优缺点.使用场景 Linux中的安装 常用命令 Redis各个 ...

  9. js 打印数组_Node.js系列二 - Node基础知识

    一. Node执行代码 1.1. JavaScript文件执行 如果我们编写一个js文件,里面存放JavaScript代码,如何来执行它呢? // 1.直接打印一段文字 console.log(&qu ...

  10. 音视频入门系列-音视频基础知识篇(录播、点播、直播)

    在学习音视频技术前,笔者还是希望可以分享给小伙伴们一些音视频方便的基本概念,掌握这些概念,有助于大家对于音视频有一个更直观和清晰的了解. 话不多说,今天笔者给大家分享下:录播.点播和直播. 录播:录播 ...

最新文章

  1. datanode 不能连接master
  2. python求导函数的值_python怎么实现函数求导
  3. mybatis学习(16):不使用接口的方式
  4. ubuntu apache2 mysql_折腾 Ubuntu 系统续之安装PHP、Apache2和Mysql
  5. Pytorch搭建自己的模型
  6. 多核处理器_游戏爱好者的福音!AMD全新一代高性能多核处理器3950X
  7. maya绝招(1-20)
  8. SAP UI5 应用开发教程之六十一 - 在 SAP UI5 应用里绘制甘特图 Gantt Chart 试读版
  9. 功能性能服务器图标,SQL Server服务器的图标及其功能
  10. web前端笔试题-完善版
  11. stvd能编辑c语言吗,STVD自动生成的stm8_interrupt_vector.c中几个疑问
  12. ET框架-03 ET框架-Demo工程的编译与运行
  13. 多渠道打包中优雅的配置渠道签名
  14. 马化腾:这个市场不是拼钱、拼流量,而是拼团队、拼使命感和危机感
  15. python系列教程158——iter函数
  16. 2020 用html jQuery实现广告轮播图自动切换 滚动页面 鼠标悬浮下标且左右切换图片
  17. Python框架:Django写图书管理系统(LMS)
  18. 网点分布图如何制作,如何制作网点地图
  19. Java编程验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和
  20. Android Gradle Composing builds 管理三方依赖

热门文章

  1. (附源码)springboot校园购物网站 毕业设计 041037
  2. 数据挖掘与决策支持系统的关系
  3. 晒一波程序员的桌面,逼格超级高
  4. 风云2号卫星云图_世界气象日话说54所与风云气象卫星的“不解之缘”
  5. flexbuilder 4.6破解
  6. 节点数对5层网络迭代次数的影响
  7. 网站页面底端“本站已经安全运行XX年XX天XX秒“代码
  8. VS2013注册串口active控件mscomm32.ocx
  9. lomboz连接mysql数据库_『在线等』 lomboz-eclipse连接mysql,连接失败
  10. C语言一个简单的贪吃蛇程序