Excel VBA编程教程(基础一)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

通过功能区「开发工具 → 代码→Visual Basic」或快捷键 Alt + F11 打开 VBA 编辑器。详细步骤参考这篇文章。
在这里插入图片描述

step three

Excel 工作簿中的 VBA 代码通常保存在工作表对象或模块中。本例中,我们用模块保存 VBA 代码。

首先选中左侧工程列表中的工作簿,后右键,在弹出的选项列表中,选择「插入」。二级菜单中,选择「模块」,完成插入新模块。
在这里插入图片描述
插入完成后,在工程列表对应工作簿内,在模块文件夹下,显示新插入的模块。新插入的模块的默认名称是,模块 x,本例中是模块1。在属性窗口,可以修改模块的名称。
在这里插入图片描述

step four 打开模块

双击上一步插入的模块1,在右侧代码窗口区域里,将打开模块1的代码编辑器。在右侧代码窗口中当前打开的代码编辑器所对应的模块,在编辑器标题末尾可以看到。
在这里插入图片描述

step five 创建一个宏(VBA 过程)

在代码编辑窗口中,输入以下代码:

Sub MyCode()
    
End Sub

这段代码是一个空的 VBA 过程,只有开始和结束。过程的其他代码,都在这中间编写。

其中 SubSubroutine 的缩写,直译过来是子程序。在 VBA 中表示一个过程,也是代表一个过程的开始。下一行 End Sub 表示过程的结束。
在这里插入图片描述

step six 编写 VBA 过程实体部分

过程的实体部分指的是,真正会被执行的部分。上一步创建的是一个空的 VBA 过程,里面不包含实体代码。虽然可以正常运行,但是不会有结果输出。

这一步我们编写 VBA 过程的实体部分。将如下代码输入到过程的开始和结束处之间。

MsgBox "Hello World"

在这里插入图片描述

step seven 运行代码

现在我们已经写完了一个完整的 VBA 过程,现在运行它,看一下结果。

将光标放置在代码的任何一处,点击工具栏上的运行「▶ 」按钮,或按 F5,运行代码。

在这里插入图片描述
可以看到运行结果,Excel 弹出一个对话框,显示内容正是在代码中编写的内容。

在这里插入图片描述

认识VBA编辑器

在这里插入图片描述
编辑器中每个模块的基本用法如下:

  • 工具栏:编辑器命令栏,与 Excel 功能区域类似,包含 Excel VBA 开发相关的命令。
  • VBA 工程:显示当前 VBA 工程包含的所有对象。通常,一个工作簿就是一个 VBA 工程,其中包括 Excel
    对象、工作表对象、模块等。
  • 属性窗口:查看和设置选中对象的属性的窗口。
  • 代码编辑窗口:实际编写代码的位置。编写、修改、保存代码,都在这里进行。
  • 立即窗口:代码运行过程中,打印出的内容,在立即窗口中显示。一般用于调试代码。
管理VBA工程

通常,一个工作簿就是一个 VBA 工程,其中包括 Excel 对象、工作表对象、模块等。当多个工作簿同时打开时,他们公用同一个 VBA 编辑器,VBA 工程界面显示所有的 VBA 工程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAmknVH3-1594377170684)(images/VBA教程/image-20200709165047990.png)]

插入/删除模块

在一个 VBA 工程中想要插入新的模块时,可在 VBA 工程右键,选择插入类型即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrQEQnPK-1594377170686)(images/VBA教程/image-20200709165315694.png)]

要删除模块,选中模块,右键,选择「移除 模块」

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-57FjvZZy-1594377170687)(images/VBA教程/image-20200709165336961.png)]

语法介绍
程序结构示例

首先,本篇将使用以下代码,介绍各种程序结构,大家可以先看一下。

Sub MyCode()

    '声明循环变量和是否为空变量
    Dim i As Integer
    Dim isBlank As Boolean
    
    '循环 A2-A10 单元格
    For i = 2 To 10
    
        '存储单元格是否为空的结果
        isBlank = Cells(i, 1).Value = ""
        
        '如果为空,则用上方的单元格的值填充当前单元格
        If isBlank Then
            Cells(i, 1) = Cells(i - 1, 1)
        End If
        
    Next i

End Sub

以上代码运行后,在 A2:A10 单元格区域,依次判断每一个单元格是否为空,如果是空,则用上一个单元格的值填充。

过程

过程是 VBA 中,程序实际运行的最小结构。单独的一行或多行代码无法运行,必须把它们放置在一个过程里,才能运行。

在示例中,Sub 过程名() 开头,End Sub 为结尾部分是一个过程的主题,其余代码需要放置在两者之间。

Sub MyCode()

End Sub

程序语句

语句,是表示一个完整意思的一行代码。

例如,示例中第一行,声明变量就是一条语句。它表示,声明一个整型变量。同理,第二行、第三行和其余的每一行都是语句。VBA 中的过程,就是由这样一条条语句构成的。

Dim i As Integer
Dim isBlank As Boolean

通常,一行就是一个语句,除非它用换行符或合并符号.

Excel VBA 对象

我们学习 VBA 的最终目的是操纵 Excel,完成一些特定的目标。其中,操纵 Excel 就是通过 Excel VBA 对象完成的。

在示例中,Cells() 就是一个 Excel VBA 对象,表示一个单元格,提供行号和列号指定单元格。

程序运行结构

接下来是程序结构中最核心的部分,也是最有意思的部分,程序运行结构。大部分编程语言都具备基本的三种程序运行结构,分别是顺序结构、循环结构、判断结构。各种简单到复杂的算法,都是由这三种基本的结构,相互组合而完成。

1.顺序结构

首先是基本的顺序结构。顺序结构,顾名思义就是按照顺序依次执行。VBA 中的顺序就是从上到下、从左到右的顺序。

在示例中,首先运行两个声明语句,然后运行循环结构,以此类推。值得注意的事,当程序有嵌套时,嵌套的部分也是按照顺序指定的。

在这里插入图片描述

2.循环结构

第二个基本结构是循环结构。当使用循环结构时,循环部分代码,按照指定的循环次数,循环重复执行。

在我们的示例中,For 至 Next i 之间的代码就是一个循环代码。
在这里插入图片描述
VBA 中,有多种循环结构,本例中是 For 循环结构。For 循环结构中,第一行指定循环次数,最后一行表示开始下一个循环。

'循环开始
For i = 2 To 10
	'这里是循环的代码
Next i

3.判断结构

最后一种基本结构是,判断结构。简单来说,该结构中,当提供的表达式为真(True)时,判断结构的主体部分才会被执行,否则跳过。

在示例代码中,If 开头和 End If 结尾处是典型的判断结构。第一行,判断 isBlank 变量是否为真,如果是,则执行判断结构主体部分,否则跳过。

'如果为空,则用上方的单元格的值填充当前单元格
If isBlank Then
    Cells(i, 1) = Cells(i - 1, 1)
End If

在这里插入图片描述

运行

下面,我们实际运行我们的示例代码,看一看它具体的效果。
在这里插入图片描述




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

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

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

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

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

数组

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

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

基础运算符

使用 VBA 开发某项功能,本质上是,对变量进行基础的运算和操作,例如加减乘除比较等。为此,VBA 提供了很多运算符和操作符,利用它们可以实现复杂的运算。

今天先学习 VBA 提供的基础运算符和操作,以及它们的基本用法。VBA 运算符可以分为以下 6 类:

  • 赋值运算符
  • 算数运算符
  • 比较运算符
  • 逻辑运算符
  • 连接运算符
  • 其他运算符

VBA 中的连接运算符用于连接 2 个或多个文本。其用法与 Excel 公式中的 & 符号相同。

连接操作符
运算符说明示例
&连接两个文本“Zhang” & ” ” & “San” -> “Zhang San”
其他操作符
运算符说明
_ (下划线)将一行代码分解成两行
: ( 英文冒号)将两行代码放置在一行
比较运算符

比较运算符,比较提供的两个变量,如果符合比较条件,返回 True,否则,返回 False。

假设 a = 10b = 3-> 表示结果。

运算符说明示例
=比较两个值是否相等a = b -> False
>大于a > b -> True
>=大于等于a >= b => False
<小于a < b -> False
<=小于等于a <= b -> False
<>不等于a <> b -> True
注释

通常,一段代码写完后,不会完全没问题。在实际使用过程中可能需要修改,符合最新的需求。过一段时间再打开查看时,可能已经忘记了当时的思路,不能很快想起来有些代码实际的用途,更不用说让别人查看了。这时,就需要注释出场了。

注释是对代码的一种解释,不影响代码的运行。VBA 中的注释语句是,以英文单引号 (')开头,后接需要解释说明的内容。

选择结构
if Then 结构

选择结构中,If Then 结构是最基础的一个。它只有条件表达式真时,执行的代码。

If Then 结构基本语法如下,其中 End If是选择结构的结束标志。

If 条件表达式 Then
    '表达式为真时,执行的代码
End If

现在我们看实际的例子,判断学生是否及格,及格条件是成绩 ≥60。如果及格,在C列对应单元格填写“及格”。具体代码如下:

Sub MyCode()

    Dim i As Integer
    
    For i = 2 To 10
    
        If Cells(i, "B").Value >= 60 Then
            Cells(i, "C") = "及格"
        End If
        
    Next i

End Sub

我们可以看到,我们使用 B 列中的学生成绩与 60 分比较,如果≥60分,就在 C 列填写及格。

条件表达式是 Cells(i, "B").Value >= 60,选择性执行的代码部分是 Cells(i, "C") = "及格"

其中,For 语句是表示循环结构,这里只需知道程序从第一个学生循环到最后一个学生,依次判断每个学生的成绩。循环结构将在下一篇中做详细介绍。

将以上代码运行后,可以看到运行结果如下:

在这里插入图片描述

If Else 结构

很多时候,我们根据表达式的真假,真时执行一块代码,假时执行另一块代码。这种需求可以使用 If Else结构实现。

If Else结构中,条件表达式在真时,执行Then后的代码;条件表达式为假时,执行 Else后的代码。基本语法如下:

If 条件表达式 Then
    '真时执行的代码
Else
    '假时执行的代码
End If

我们继续看实际的例子。在上一个例子的基础上,这次对不及格的学生,在C列填入不及格。代码如下:

Sub MyCode()

    Dim i As Integer
    
    For i = 2 To 10
    
        If Cells(i, "B").Value >= 60 Then


![img](https://img-blog.csdnimg.cn/img_convert/9a0344074cc4936479235356a15f00d5.png)
![img](https://img-blog.csdnimg.cn/img_convert/3e6fefe417271ab2f17d998802d8e846.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

们继续看实际的例子。在上一个例子的基础上,这次对不及格的学生,在C列填入不及格。代码如下:



Sub MyCode()

Dim i As Integer

For i = 2 To 10

    If Cells(i, "B").Value >= 60 Then

[外链图片转存中…(img-Xrococee-1715872114084)]
[外链图片转存中…(img-zobYbxFo-1715872114084)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值