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

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

  • 54
    点赞
  • 433
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Excel中,VBA是一种编程语言,可以用来自动化执行一系列操作。如果要通过VBA来调用VLOOKUP函数实现动态查询,我们可以按照以下步骤进行操作: 1. 打开VBA编辑器:在Excel中按下Alt+F11键,即可打开VBA编辑器窗口。 2. 在VBA编辑器中插入新的模块:在"插入"菜单中选择"模块",即可在项目资源管理器中创建一个新的模块。 3. 编写VBA代码:在新的模块中输入以下代码,用于调用VLOOKUP函数实现动态查询。 ```vba Function VLOOKUP_Dynamic(LookupValue As Range, LookupRange As Range, ColumnIndex As Integer) As Variant Dim Result As Variant Result = Application.WorksheetFunction.VLookup(LookupValue, LookupRange, ColumnIndex, False) VLOOKUP_Dynamic = Result End Function ``` 4. 保存并关闭VBA编辑器:保存VBA代码,然后关闭VBA编辑器窗口回到Excel工作表。 5. 在单元格中调用VBA函数:在Excel工作表中选择一个单元格,在函数栏中输入"=VLOOKUP_Dynamic(要查找的值, 查找范围, 返回列索引)",并按下回车键。其中,"要查找的值"是要动态查询的值,"查找范围"是要进行查询的范围,"返回列索引"是要返回的列号或列索引。 通过以上步骤,我们可以通过VBA调用VLOOKUP函数实现动态查询。每当单元格中的值发生变化时,VLOOKUP_Dynamic函数将会重新计算并返回相应的查询结果。这种方法可以节省时间和手动操作的复杂性,提高查询的效率和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值