大家好,我是永不止步的老牛。
在上一篇文章中,我们介绍了VBA编辑器。 在本文中,我们介绍VBA过程和函数以及函数、函数和方法(使用代码为单元格设置公式)。
上一篇文章提到,过程和函数是程序运行时执行某些动作、完成特定任务的代码组合。
该过程以 Sub 开始,以 End Sub 结束。 该过程执行一些代码但不返回值。
函数以 End 开始并以 End 结束。 该函数执行一些代码并返回一个值。 该函数可以从过程执行或在 Excel 工作表中使用。 它可以像 Excel 内置函数一样直接在公式中使用。 Excel 中内置了许多函数。 但总有一些需求是内置功能无法实现的。 我们可以自己编写代码来实现,并创建一些Excel没有的功能。
让我们通过一个例子来开始今天的学习。 体重指数(BMI)是常用来衡量人类肥胖和健康的重要标准。 BMI的正常范围是18.5-23.9。 如果低于18.5,则属于体重不足,如果高于23.9,则属于超重。 体重,BMI = 体重(公斤)除以身高平方(米平方)。
1.写一个流程
名称中输入“”,点击确定,关闭添加过程窗体,一个过程就添加到了VBA代码窗口中:
子()
结束子
第一句声明进程名,默认为关键字,表示该进程在所有模块的所有进程中都可以访问。 关键字是可选的。 关键字 Sub 后跟过程名称和一对空括号。 括号中可以添加需要传递的参数。 该过程必须以 End Sub 语句结束。
如果替换为 ,则该程序只能被“体重指数计算”模块中的其他程序调用,而不能被其他模块中的程序调用。
我们在流程体中的Sub()和End Sub之间输入计算BMI的代码。 首先我们定义三个变量BMI、and,并给and赋值。 然后我们计算BMI值并将BMI值输出到立即窗口,最后使用 功能提示计算完成和BMI值。
子()
Dim BMI As 'BMI 值
Dim As '高度值
Dim As '权重值
= 1.81
= 66
体重指数=/()^2
调试.打印BMI
“BMI计算完成,BMI为”&BMI,+,“提示”
结束子
将光标定位在流程代码中的任意位置,然后按 F5 运行该流程。 立即窗口会输出BMI值,并弹出对话框显示BMI值。
在此过程中,使用Dim来声明变量并明确数据类型。 使用 = 将右侧的值赋给左侧的变量。
“/”是除法运算符,“^”表示计算平方,Debug.Print BMI 将变量BMI 的值输出到立即窗口。 它是一种对话框功能,为用户提供一些信息,支持人机交互。
2. 使用函数
函数语法为:([, ] [, 标题] [, , ])
[]中的参数可以省略。 具体参数的含义、参数值、返回值列在表格中。 函数可以有返回值,调用方式有两种:
A.“消息”、“提示”
B. =("确定删除此数据吗?", +, "提示")
A相当于只是在界面上显示一个对话框,提示用户一些信息。 用户单击按钮后不会进行任何处理。
B相当于在界面上显示一个对话框,将用户点击的不同按钮的值返回给变量,然后程序可以根据这些值决定如何执行后续代码。
函数参数解释如下:
参数值设置如下图:
参数
将每组数字中的一个值相加即可得到最终值。
返回值如下图:
我们先介绍一下这里的功能。 让我们继续我们的编程。 在之前写的代码中,我们直接给出了身高和体重值。 现在我们需要让用户输入身高和体重。 我们将代码修改为这样:
子()
Dim BMI As 'BMI 值
Dim As '高度值
Dim As '权重值
= (“请输入您的身高”)
= (“请输入您的体重”)
体重指数=/()^2
调试.打印BMI
“BMI计算完成,BMI为”&BMI,++,“提示”
结束子
将光标定位在流程代码中的任意位置,然后按 F5 运行该流程。 将弹出一个对话框,要求输入高度。 输入并确认后,会弹出一个对话框,要求输入重量。 输入并确认后,窗口立即输出BMI值,并弹出对话框显示BMI值。 这里我们使用一个函数来允许用户输入信息。
3. 使用函数
函数语法:(, [ 标题 ], [ ], [ xpos ], [ ypos ], [ , ])
[]内的参数可以省略。
:对话框中显示的信息。
标题:对话框的标题。 默认标题是 Excel。
:文本框中显示默认值。 如果忽略,将显示一个空白文本框。
xpos 和 ypos:对话框在屏幕上出现的位置。 如果忽略,它将显示在当前窗口的中央。 xpos 确定对话框从屏幕左侧开始的水平位置。 忽略时,对话框将显示在水平居中。 ypos 确定对话框处于屏幕从上到下的垂直位置。 当您忽略它时,该对话框大约是垂直方向的三分之一。
and:本章前面介绍的函数对应参数的使用方法是一样的。
具体参数说明见下表:
了解了函数的用法后,我们再次修改上面的代码,不使用函数默认的标题“Excel”。
子()
Dim BMI As 'BMI 值
Dim As '高度值
Dim As '权重值
= ("请输入一个值","输入您的身高")
=(“请输入一个值”,“输入您的体重”)
体重指数=/()^2
调试.打印BMI
“BMI计算完成,BMI为”&BMI,++,“提示”
结束子
4. 编译函数并在过程和公式中使用它
这里先介绍一下流程。 我们来看看这个函数。 函数也是一个过程,但函数可以返回一个值。 该函数只能被流程调用或者在Excel工作表的公式中使用,不能像流程那样使用F5或者菜单。 “运行”执行。
创建函数的方法与前面介绍的创建过程相同,通过菜单“插入”-“模块”,选择“函数”。
您也可以手动编写代码来创建它。 我们直接在“BMI计算”模块的代码窗口中输入以下代码:
(w, h As ) As
= w / (h) ^ 2
结尾
关键字后面是函数名称和一对空括号。 括号中的w和h是传递给函数的参数。 该函数以 End 语句开始并以 End 语句结束。
表示该函数可以在所有模块的所有程序中访问,也可以在Excel公式中使用。 如果被替换,该函数只能被同一模块中的其他程序调用,而不能被其他模块中的程序调用。 也不能在 Excel 公式中使用。
最后一个As表示函数返回值的数据类型。 如果省略,则默认为。
函数的返回值就是将返回的内容赋给函数名。
如果在参数前添加关键字,则表示该参数是可选参数,也就是说在调用函数时,可以传递该参数值,也可以不传递。 注意,如果一个参数设置为可选参数,那么该参数后面的所有参数都必须是可选参数。
先简单介绍一下函数,还有通过地址、值传递参数等,后面使用的时候再详细说明。
写完函数后,我们可以修改前面的流程,并在流程中调用该函数。 代码如下:
子()
Dim BMI As 'BMI 值
Dim As '高度值
Dim As '权重值
= (“请输入一个值”,“输入您的身高”)
=(“请输入一个值”,“输入您的体重”)
体重指数 = (, )
调试.打印BMI
“BMI计算完成,BMI为”&BMI,++,“提示”
结束子
F5运行,结果和之前一样。
我们来看看如何在Excel公式中引用函数。
现在每个人都知道如何编写过程和函数,以及如何使用函数。
5. 使用方法
前面提到的函数属于VBA库。 Excel库中有一个方法。 您可以在对象浏览器中搜索它。 您可以看到 2 条搜索结果,一项属于 VBA,一项属于 Excel。
方法语法: . (、标题、、左、顶部、、、类型)
:代表对象的变量。
参数说明如下:
除了最后一个参数Type外,其他参数基本与函数对应。 让我们关注 Type 参数。 Type参数的值为下表中的数据:
类型设置允许用户输入数据类型,可以是单个值或多个值的总和。 如果允许输入文本和数字,则类型设置为 1 + 2。
如果 Type 为 0,则以文本格式返回公式。 如果 Type 为 4,则返回 True 或 False。 如果 Type 为 8,则返回 Range 对象。 如果是8,则必须使用Set语句将结果赋给Range对象。
如果不使用 Set 语句,该变量将被设置为范围内的值,而不是 Range 对象本身。
如果使用方法提示用户输入公式,则必须使用属性将公式分配给 Range 对象。
方法与函数的不同之处在于,方法可以有选择地验证用户输入,并且可以与 Excel 对象、错误值和公式一起使用。 。 调用一个方法; 调用不带对象限定符的函数。
如果用户输入的内容与Type设置不匹配,则会出现提示。 确认后,将继续等待用户输入。
用下面的例子来展示Type为8时使用和不使用Set的区别。代码如下,动画中可以看到区别效果:
子()
暗淡值
暗淡
设置值 = .(:="请选择一个单元格", 类型:=8)
Set = .(:="请选择一个单元格", 类型:=8)
价值
结束子
我们来演示一下,当Type为0时,如何将我们的动态输入公式设置到单元格中。代码如下,动画中可以看到效果:
子()
暗淡值
值 = .(:="请输入 BMI 公式", 类型:=0)
.范围(“F7”)。 = 值
结束子
VBA流程和函数以及函数、函数和方法的介绍就到此结束。 今天的内容还蛮多的。 最好你自己练习一下。 在下一篇文章中,我们将介绍Excel宏。