Excel VBA 中的 10 个基本概念

在正式接触实际的 VBA 代码之前,对 Excel VBA 中的一些概念有初步的认识,将会有助于学好 Excel VBA

要是细数 VBA 中的概念,估计用10篇文章都说不完。因此今天只介绍其中最基本的概念,这些概念将在以后的教程中反复出现,是学会 VBA 的必备基础。而其余的部分,会随着学习的深入,也会逐步做介绍。

Excel VBA 基本原理

说到 Excel VBA 的基本原理,自然的出现两种基本概念,一是 VBA 语法层面,一是 Excel 层面。那么这两者有什么区别,参考下面的图。

简单的总结一下上图:Excel 是一个对象,这个对象包含很多属性和子对象,而 VBA 是可以操作这些对象的工具,实现各种各样的效果。例如,Excel 包括 Range 对象,即单元格对象,使用 VBA 可以改变单元格对象的填充颜色属性。用代码表示如下。

'A1 单元格的填充颜色设置为颜色号为 49407 的颜色
Range("A1").Interior.Color = 49407

上面的代码现在不懂没关系,在这里使用代码简单的演示一下 Excel 中的对象和 VBA 的关系。

  • Range(“A1”)、Interior、Color 等是 Excel 具备的对象和属性;
  • 对象和属性的操作,是通过 VBA 语言实现的,即上面是一行 VBA 代码。中间的等号(=)是 VBA 语言的赋值符号,也是能改变单元格填充颜色的关键所在。

以上就是 Excel VBA 的基本原理。下面从 VBA 语言层面和 Excel 对象层面,分别介绍相关基本概念。

VBA 语言中基本概念

注释

注释是代码中不会被执行的一段代码。注释是几乎所有编程语言具备的功能,VBA 也不例外。

VBA 中的注释以英文单引号 (‘) 开头,后面接注释的内容。从单引号开始的部分不会被执行。

'我是一行注释

注释,正如字面意思,用来对代码进行解释。在写代码过程中,对代码进行注释是好的习惯,有助于自己或别人,更好的理解已经存在的一段代码。

关于注释的使用,在往后的教程中可以看到很多用法,可以进一步加深理解。

变量

变量是存储数据的一种表达方式。在程序开始,可以声明一个变量,指定变量的类型(数字、文本、逻辑值等),并给变量赋值。在程序其他地方,就可以用该变量,使其存储的值参与运算。

以下方代码为例,

'声明一个文本类型的变量
Dim s As String
'给 s 变量赋值,即 "Hello World"
s = "Hello World"
'在 A1 单元格写入 s 变量存储的数据
Range("A1").Value = s

可以看到,s 变量存储 “Hello World”文本,该文本在程序中就可以用s 变量表示。这部分内容在下一章「变量、类型和运算符」中详细介绍。

程序结构

程序结构表示程序的运行方式。VBA 正是因为存在多种代码结构,才能实现各类复杂的数据计算。常用的代码结构以下三种:

  • 顺序结构
  • 条件结构
  • 循环结构

顺序结构,顾名思义,程序按照顺序执行。在 VBA 中就是从上到下,一行一行地执行。

条件结构,代码中的指定部分,按照某个条件,选择性地执行。即,条件为真时,执行指定代码;否则跳过该部分代码,不执行。

循环结构,代码中的指定部分,按指定次数,循环执行。这是为什么 VBA 的效率高的一个原因,因为它能将相同的操作,自动按任意数量重复执行。

关于程序结构的内容,在「程序结构」一章中详细介绍。

过程和函数

过程或函数包含多行代码,是组织代码的两种方式。一般情况下,一个过程或函数只包含实现一个功能的相关代码。如果一个过程或函数实现多个功能,建议将代码分成多个过程或函数。

过程和函数都可以执行一段代码,主要区别是,执行完代码后,函数能返回一个值,而过程不能返回。更多内容将在「过程和函数」章节介绍。

数组

数组表示一组同类型的数据的集合,是 VBA 中最重要的概念之一。以下面的代码为例:

'创建数组
Dim s(1 to 4) As String
'给数组的元素赋值
s(1) = "Excel"
s(2) = "Word"
s(3) = "PowerPoint"
s(4) = "Outlook"

上述代码创建了一个长度为4个、类型为文本的一个数组。对数组,使用编号给相应位置进行赋值。

在 VBA 的实际应用中,经常需要将单元格的数据转换为数组进行处理。更多内容在「数组」章节介绍。

对象

对象是一个物,它可以是一个事、一个物体、一个概念、一个名词。对象包含描述静态信息的属性和对对象可以操作的方法

以生活中的对象为例子,汽车是一个对象。汽车的车牌号、油量、里程等是汽车的属性;开车、加油、换车牌等是汽车的方法。

在 VBA 中也是类似。工作表(Worksheet)是一个对象,它具有名称、标签颜色等属性,有添加、删除等方法。Excel VBA 中对象将在「Excel VBA 对象模型」一章中详细介绍。

Excel VBA 中的基本概念

Excel 对象模型

在上面对象一段中,说到了工作表(Worksheet)对象。其实 Excel 本身是就是一个对象,是 Excel 中的最大的对象,使用 Application 表示。Application 对象又包含工作簿(Workbook)对象,工作簿(Workbook)对象又包含工作表(Worksheet)对象,而工作表(Worksheet)对象又包含其他的子对象。

上面一段基本描述了 Excel VBA 对象模型,即是一种树状结构,多个对象通过有逻辑的层次结构组织在一起。

 

更多内容在「Excel VBA 对象模型」一章中详细介绍。

常用 Excel 对象

  • Application 对象,表示 Excel 应用程序。
  • Workbook 对象,表示工作簿对象。
  • Worksheet 对象,表示工作表对象
  • Range 对象,表示单元格区域对象。

模块

模块是包含一个或多个过程或函数的内部组件。一个工作簿内包含的模块数量没有限制,一个模块内包含的过程或函数数量也没有限制。模块用来作为保存过程或函数的容器,这些过程和函数通常应用于整个工作簿。

通过把多个过程和函数,合理的放置在不同的模块,可以使整个 VBA 代码逻辑更清晰、更易于阅读和理解。

用户窗体

用户窗体是 VBA 代码与使用者交互的用户界面。Excel VBA 提供很多基本的窗体控件,可以制作复杂的用户界面。最典型的,Excel 中设置单元格格式的窗口界面,就是一个用户窗体。

最基本的窗体控件包括:

  • 文本控件
  • 按钮控件
  • 列表控件
  • 输入控件

关于窗体的更多内容,将在「用户窗体」一章详细介绍。

其他基本概念

VBA 编辑器

VBA 编辑器是 Excel 中写 VBA 代码的地方。编辑器中可以进行下列操作:

  • 编写代码
  • 修改已有的代码
  • 插入新的模块,编辑模块中的代码
  • 插入用户窗体,设计窗体界面
  • 运行代码
  • 调试代码

这部分内容将在「Excel VBA 编辑器」章节详细介绍。

 

以上就是今天要介绍的 Excel VBA 基本概念。在往后的教程中,它们会不断出现,加深你的理解。如有问题,欢迎在留言区评论讨论。

转载注明:文章转载自「懒人Excel - www.lanrenexcel.com
订阅评论
提醒
59 评论
最新
最旧 最多投票
内联反馈
查看所有评论
kain
4 月 前

多谢分享,受教了!小白前来拜访

Lisa
5 月 前

非常棒!

竹蜻蜓
6 月 前

很好,谢谢。让我们这些小白不只是会用,还懂得了其基本原理

半途而废
7 月 前

再次复习了基本概念,每次想学的时候都看基础。。。永远在基础上学习。。。

半醒半醉
9 月 前

非常好!感谢!

缘于一
1 年 前

非常感谢能够有这么好的学习平台

无事者
1 年 前

牛了溜溜了

123123
1 年 前

真不错

无事*
1 年 前

感谢,非常详细,通俗易懂

小白aaaaa
1 年 前

解释得太通俗易懂了,谢谢

蜗牛不会走路
1 年 前

作者大神牛,感谢分享

安小夏
1 年 前

打卡

Sean
1 年 前

非常好的分享

EXCEL学员
1 年 前

感谢,希望能看懂。

阿咩咩
1 年 前

准备把基础资料看完再报课!

邓紫棋的内蒙男友
1 年 前

现在看不懂,但是真心想学,纯小白,感觉难度非常大,非常感谢博主分享。

zjysg
1 年 前

极度舒适

迈迈啊啊
1 年 前

Sub 初学()

  Dim s(1 To 4) As String ‘给数组的元素赋值
   
s(1) = “Excel”
s(2) = “Word”
s(3) = “PowerPoint”
s(4) = “Outlook”
Range(“A1”).Value = s1
Range(“A2”).Value = s2
Range(“A3”).Value = s3
Range(“A4”).Value = s4

End Sub
数组那组怎么不成功呢,这样也不行?哪里有问题呢

123
1 年 前
回复给  迈迈啊啊

你这个代码不会出现显示编译错误吗?声明和函数过程要分开些

叫我随便
1 年 前

点赞~

spq
1 年 前

不懂

华佬aa
2 年 前

多谢大佬!

小南瓜
2 年 前

谢谢分享

Zark
2 年 前

大佬牛逼!!!

不贰过
2 年 前

感谢分享,无数次放弃后,又来学习VBA了。

二龙2333
2 年 前

谢谢您的无私分享,思路真的太清晰了

heitainiu
2 年 前

感谢分享,感觉比较清晰,又不艰涩,继续学习!

Finch.
2 年 前

感谢作者大大无私分享!好喜欢

Vincent
2 年 前

val是函数呀,能声明作为变量使用吗

tongxue
2 年 前

爱了爱了

binzz
2 年 前

cells和range有什么区别?

最后由binzz编辑于2 年 前
yutian
2 年 前

你好,请问上面提到的数组章节在哪里可以看到?

dora
2 年 前

谢谢,第一天学习!

SaaS
2 年 前
回复给  dora

不客气 ,好好学

Kai.S
2 年 前

注释的字体颜色是不是能调整一下,配合黑底,不是很清晰。

一凡*
2 年 前

感谢作者的无私奉献,作为新的初学者真的受教了!真诚感谢!

y2006718
2 年 前

第一天学习,感谢作者无私分享!

adolph
2 年 前

敲优秀!👍

xiaoA
2 年 前

感谢!非常重要的概念和基础知识! Appreciate your contributions!

张恒宇
2 年 前

感谢分享,有很大帮助。

大宝徐
3 年 前

有个问题: VBA 编辑器中是否模块里面的过程和函数是应用在整个工作薄的? 那ThisWorkBook里面的过程和函数呢?还有某个sheet对应的过程和函数呢?就是他们的作用范围都是怎么样的?

Thanks
2 年 前
回复给  大宝徐

很好的问题啊,10个月过去了,可否分享一下你的见解呢

大宝徐
3 年 前
回复给  懒人Excel

好的,期待

兰尼斯特家族
3 年 前

来学习

Clementh
3 年 前

谢谢你的用心与无私的分享!让我们(至少是我)可以有一个方便与适合我的学习地方和科目。感恩!

慢慢学
3 年 前

语言很平实,可以理解到VBA的大体轮廓。

cufu
3 年 前

第一天学习打卡

123
3 年 前

VBA编辑器
VBA 编辑器“正”Excel 中写 VBA 代码的地方。

是有个错别字不?

宁缺毋滥
1 年 前
回复给  懒人Excel

高手就是高手

59
0
希望看到您的想法,请您发表评论x