Excel-VBA 快速上手(一、宏、VBA、过程、类型与变量、函数)


一、Excel VBA 介绍


VBA(Visual Basic for Applications),是一种用来扩展 Microsoft Office 功能的编程语言,常见的是用来扩展 Excel 功能,为 Excel 添加自动化脚本,而从提高 Excel 的办公效率

1.1. 宏


宏是录制 Excel 操作过程,然后自动生成 VBA 代码的工具,通过宏可以避免编写大量的 VBA 代码,能更简单的实现 Excel 自动化,但是宏具有局限性,当要实现逻辑更复杂的功能时,还是需要编写 VBA 代码

1. 录制宏

Microsoft Office 中自带 VBA 相关插件, 但是本文使用的是 WPS Office,需要自行安装插件才能支持 VBA 功能,如果找不到插件的下载地址,可以留言邮箱

WPS 中录制宏很简单,按下面步骤操作即可:

  1. 在 Excel 中点击 开发工具 -> 录制新宏
  2. 从这一刻开始,对 Excel 的操作都会被录制下来,想停止时点击结束录制即可

附上一张 WPS 中录制宏的完整操作动图,录制的内容是,为 C1 单元格添加 =SUM(A1,B1) 表达式:

求和宏

2. 其他 Excel 工作簿中使用录制好的宏

WPS 中使用宏同样简单,按下面步骤操作即可:

  1. 打开带有宏的 Excel 工作簿
  2. 打开要使用宏的工作簿
  3. 在要使用宏的工作簿中点击 开发工具-> VB宏 -> 按名称选择要使用的宏 -> 运行即可

附上一张 WPS 中使用宏的完整操作动图,宏的内容是,为 C1 单元格添加 =SUM(A1,B1) 表达式:

使用求和宏

3. 查看录制宏后自动生成的 VBA 代码

WPS 中查看宏对应的 VBA 代码,按下面步骤操作即可:

  1. 打开带有宏的 Excel 工作簿
  2. 在要使用宏的工作簿中点击 开发工具-> VB宏 -> 按名称选择要使用的宏 -> 编辑

附上一张 WPS 中查看宏自动生成的 VBA 代码的动图:

查看宏代码

例子虽然简单,但是也能很好的展示宏的基本作用


1.2. Visual Basic 编辑器


不论是 Microsoft Office 还是 WPS Office,VBA 代码是通用的,一般习惯使用 Visual Basic 编辑器来编写 VBA 代码,在 WPS 中打开 Visual Basic 编辑器的方式如下

打开VB编辑器述

Visual Basic 编辑器基本布局介绍

因为没想把 VBA 研究的太深,所以对于 VB 编辑器界面,简单了解下几个比较重要的地方就可以了

1. 代码书写的位置

VBA代码书写的位置

2. 常用窗口

VBA常用窗口

3. 其他常用窗口
VBA 编辑窗口

二、VBA - 定义过程


语法

通过 Sub 关键字来定义过程,一个模块中可以定义多个过程,每个过程其实就是一个宏,都可以被单独使用,也可以在一个过程内通过 Call 过程名 的方式调用另一个过程:

Sub 过程名称()
  '过程内容
End Sub

演示

在 Excel 中使用 VBA 代码一般有两种方式,一种是通过事件触发,一种是通过窗体控件触发,现在通过窗体控件的方式演示一下如何使用 VBA 代码

1. 在模块中定义如下过程:

Sub studyVBA()
  Sheet1.Cells(1, 1) = "今天开始学习VBA!!"
End Sub

2. 在 Excel 工作表中添加一个按钮,并为其指定宏(既我们定义的过程名称):

定义过程

三、VBA - 类型与变量


1. 数据类型

想定义变量首先得知道要定义的变量是什么类型,VBA 中有很多数据类型,常用的有:

类型名称关键字关键字简写
整型Integer%
长整型Long&
单精度Single!
双精度Double#
字符型String$

声明类型时个人不建议用简写的方式,VBA 中除了基本类型外,也支持对象类型

2. 定义变量

在 VBA 中声明变量常见的方式是 PublicDimDim 声明的变量属于局部临时变量,其作用域为其所在结构体,Public 声明的变量一般定义在全局中,既不会定义在某个过程中

等后面学习类相关知识时,还会学习 Public 的其他用法,以及其他定义变量的方式

声明变量语法:

Dim 变量名 As 数据类型
Public 变量名 As 数据类型

声明变量演示:

Public globalNum As Integer

Sub studyVBA()
  Dim localNum As Integer
End Sub

变量赋值:

仅仅声明变量是不够的,我们还需要给变量赋值,给变量赋值分两种情况:

  1. 给基本类型的变量赋值,直接使用 变量名 = 值 的语法即可
  2. 给对象类型的变量赋值,需要利用到 Set 关键字,语法为 Set 变量名 = 值

变量赋值的演示:

Sub studyVBA()
  ' 给基本类型变量赋值
  Dim localNum As Integer
  localNum = 100
  
  ' 给对象类型变量赋值  
  Dim obj As Range
  Set obj = Range("a1")
End Sub

四、VBA - 函数


1. 普通函数


定义普通函数的语法:

Function 函数名称(参数1,参数2, 参数n)
  逻辑代码
  函数名称=返回值
End Function

定义普通函数的示例:

'定义函数
Function setValue(num1, num2)
  setValue = num1 + num2
End Function

调用普通函数的示例:

1. 在过程中使用定义好的函数

'在过程中调用函数
Sub invoke()
  Sheet1.Cells(1, 1) = setValue(1, 2)
End Sub

2. 在 Excel 中以函数表达式的方式使用定义好的函数
Excel中使用普通函数

2. 可选参数的函数


可选参数的函数:定义函数时,指定参数为可选,调用函数时该参数就可传,可不传

定义可选参数的函数 - 语法:

Function 函数名称(参数1Optional 参数2 as 类型,参数n)
  逻辑代码
  函数名称=返回值
End Function

定义可选参数的函数 - 示例:

'定义函数
Function setValue(num1, Optional num2 As Integer)
  setValue = num1 + num2
End Function

调用可选参数的函数 - 示例:

与调用普通函数没有区别,只不过参数可以选填

'在过程中调用函数,选择不传入第二个参数
Sub invoke()
  Sheet1.Cells(1, 1) = setValue(5)
End Sub

3. 参数有默认值的函数


参数有默认值的函数:在可选参数的函数基础上,为没有传值的参数设置默认值

定义参数有默认值的函数 - 语法:

Function 函数名称(参数1Optional 参数2 as 类型 = 默认值,参数n)
  逻辑代码
  函数名称=返回值
End Function

定义参数有默认值的函数 - 示例:

'定义函数
Function setValue(num1, Optional num2 As Integer = 100)
  setValue = num1 + num2
End Function

调用参数有默认值的函数 - 示例:

'在过程中调用函数,选择不传入第二个参数
Sub invoke()
  Sheet1.Cells(1, 1) = setValue(5)
End Sub

4. 调用函数时指定参数名称传值


当调用函数时,如不想按照参数列表的顺序传入参数值,也可以使用 函数名(参数名:=参数值) 这种指定参数名称的格式进行函数调用

示例

Sub invoke()
  Sheet1.Cells(1, 1) = setValue(num2:=100, num1:=200)
End Sub

5. 不定长参数列表的函数


当定义函数时,参数数量无法确定,需要在函数调用时由调用者决定,这种场景可用不定长参数列表的函数

不定长参数列表的函数 - 语法

不定长参数列表的函数是将传递过来的参数变化成数组

Function 函数名(ParamArray 参数名())
End Function

示例

定义不定长参数列表的函数

'定义函数
Function setValue(ParamArray params())
  For Each Item In params
    Debug.Print Item
  Next
End Function

调用不定长参数列表的函数

'调用函数
Sub invoke()
  '不需要返回值时参数列表不需要小括号
  setValue 5, 6
  '需要返回值时参数列表必须有小括号
  Dim returnVal As Integer
  returnVal = setValue(5, 6)
End Sub

不管哪种方式的函数定义,在调用时如果想使用函数返回值,在调用时就必须将参数列表写在小括号里, 如果不想使用返回值,调用处可以将小括号省略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值