요약
일반 VBA 프로그램의 경우, 광고에 하나 개 이상의 기능을 할 수있다. 결국, 엑셀 VBA를 보조 도구를 사용하여 만한다.
프로젝트의 기본 코드를하는 동안 그러나 VBA로, 그것은 필요가 관리하는 프로젝트로, 점점 더 쓰기 기능 및 모듈 .
기능
VBA를 기능이 하나이고, 두 종류가 서브 , 하나는 기능 VBA에서이 사실, 하위는 , 그들 사이의 차이는 두 가지가있는 함수를 호출하지 않는 프로세스라고 :
- 함수는 값을 반환, 서브 없음
- 하위 직접 실행할 수있는, 기능을 수행하기 위해 호출해야
다음과 같이 하위 및 예제의 기능은 다음과 같습니다 :
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
함수의 반환 값은, 결과가 함수 이름 자체에 할당합니다 추가 = A + B , 그렇지 않으면 반환 값은 항상 0
모듈
모듈의 목적은 몇 가지 일반적인 기능을, 우리는 모듈 및 수출로 포장 할 수있다 재사용 할 수있다. 이러한 방법으로, 다른 프로젝트에서 가져 오기 기존 VBA 모듈, 그들은 바퀴를 중복 작성하지 않습니다.
수출 모듈 그냥 내보낼 수 있습니다 해당 모듈을 마우스 오른쪽 버튼으로 클릭, 매우 간단합니다, 수출은 * .BAS 파일입니다.
일반 모듈
간단한 일반 모듈, 우리는 기본적으로 일반 모듈에서, 사실의 하위 또는 기능 전에 썼다.은 예제 프로젝트 다음, 나는 두 개의 모듈, 즉 메인 및 MyMath을 생성, 주요 나중에 다시 사용하기 위해, MyMath을 테스트하는 데 사용 함수가 사용된다.
기본 모듈 :
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
MyMath 모듈 :
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
클래스 모듈
위와 같이 패키지뿐만 아니라, 기능을 통해 일부 기능이 실시 예를 선호 할 객체 지향 설계 개발자에 대해 잘 알고, 구성 할 수있는 VBA 클래스의 방법을 따를 수 있습니다.
- 이전에 선택한 제외하고, 클래스 모듈, 새 모듈과 같은 일반적인 단계를 만들기의 새로운 유형의 클래스 모듈
예를 들어, 우리는 새로운 클래스 모듈 MathCls을 만듭니다
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
개요
에 관계없이 패키지 방식의 종류, 패키지는 그런 식으로 함수를 찾을 필요가있다. 기능 및 객체 지향 프로그래밍과 마찬가지로,이 두 가지 방법처럼, 아무도 적절한 장면 각각은, 높거나 낮은 없습니다.