VBA基础 - 函数和模块
2020-12-13 15:35
标签:UNC math 需要 工具 右键 函数 不同 不同的 除了 对于一般的 VBA 程序来说, 可能一个或几个函数就行了. 毕竟, VBA 只是作为 excel 的辅助工具来用的. 但是, 随着 VBA 写的越来越多, 用个工程来管理就有必要了, 而一个代码工程的基础, 就是 函数 和 模块. VBA 的中的函数有 2 种, 一种是 Sub, 一种是 Function 在 VBA 中, 其实 Sub 叫过程, 不叫函数, 它们的区别有 2 个: Sub 和 Function 的示例如下: 注意, 函数的返回值, 是将结果赋值给函数名本身 Add = a + b , 否则返回值一直是 0 模块化的目的是复用, 对于一些通用的功能, 我们可以封装成模块并导出. 这样, 在不同的 VBA 工程中导入已有的模块, 就不用重复的造轮子. 模块的导出很方便, 只要在对应的模块上点击右键, 导出即可, 导出后是一个 *.bas 的文件. 一般模块简单明了, 我们之前写的 Sub 或者 Function 其实都在一个默认的一般模块中. 下面的示例工程, 我创建 2 个模块, 分别是 Main 和 MyMath, Main 用来测试, MyMath 中是为了以后复用的函数. Main 模块: MyMath 模块: 运行 Main 模块, 结果如下: 除了像上面那样通过函数来封装一些功能, VBA 也可以按照类的方式来组织, 熟悉面向对象设计的开发人员可能更喜欢这种方式. 比如我们新建一个 MathCls 的类模块: 用来测试的 Main 模块, 这是个普通模块 无论采用那种方式来封装, 要看需要封装的功能适合那种方式. 这 2 种方式就像函数式和面向对象编程一样, 没有谁高谁低, 各自有适合的场景. VBA基础 - 函数和模块 标签:UNC math 需要 工具 右键 函数 不同 不同的 除了 原文地址:https://www.cnblogs.com/wang_yb/p/11613069.html概要
函数
1 Option Explicit
2
3 Sub CallAnotherMod()
4 Dim sum As Integer
5 sum = Add(2, 3)
6 Debug.Print sum
7 End Sub
8
9 Function Add(a As Integer, b As Integer) As Integer
10 Debug.Print a
11 Debug.Print b
12 Add = a + b
13 End Function
模块
一般模块
1 Option Explicit
2
3 Sub CallAnotherMod()
4 Debug.Print "2 + 3 = " & (Add(2, 3))
5 Debug.Print "2 * 3 = " & (Multiply(2, 3))
6
7 End Sub
1 Option Explicit
2
3 Function Add(A As Integer, B As Integer) As Integer
4 Add = A + B
5 End Function
6
7 Function Multiply(A As Integer, B As Integer) As Integer
8 Multiply = A * B
9 End Function
2 + 3 = 5
2 * 3 = 6
类模块
1 Option Explicit
2
3 ' 常量, class说明
4 Const MathClsName = "math class"
5
6 Dim MathA As Integer
7 Dim MathB As Integer
8
9 ' 相当于其他面向对象语言中的 set 方法
10 Public Property Let A(numA As Integer)
11 MathA = numA
12 End Property
13
14 ' 相当于其他面向对象语言中的 get 方法
15 Public Property Get A() As Integer
16 A = MathA
17 End Property
18
19 ' 相当于其他面向对象语言中的 set 方法
20 Public Property Let B(numB As Integer)
21 MathB = numB
22 End Property
23
24 ' 相当于其他面向对象语言中的 get 方法
25 Public Property Get B() As Integer
26 B = MathB
27 End Property
28
29 Function Add() As Integer
30 Add = MathA + MathB
31 End Function
1 Option Explicit
2
3 Sub CallAnotherMod()
4
5 Dim mc As New MathCls
6 mc.A = 2
7 mc.B = 3
8
9 Debug.Print (mc.Add())
10
11 End Sub
总结
下一篇:常见流行编程语言介绍