VBA 기초 - 기능 및 모듈

요약

일반 VBA 프로그램의 경우, 광고에 하나 개 이상의 기능을 할 수있다. 결국, 엑셀 VBA를 보조 도구를 사용하여 만한다.

프로젝트의 기본 코드를하는 동안 그러나 VBA로, 그것은 필요가 관리하는 프로젝트로, 점점 더 쓰기 기능모듈 .

기능

VBA를 기능이 하나이고, 두 종류가 서브 , 하나는 기능 VBA에서이 사실, 하위는 , 그들 사이의 차이는 두 가지가있는 함수를 호출하지 않는 프로세스라고 :

  1. 함수는 값을 반환, 서브 없음
  2. 하위 직접 실행할 수있는, 기능을 수행하기 위해 호출해야

다음과 같이 하위 및 예제의 기능은 다음과 같습니다 :

 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

개요

에 관계없이 패키지 방식의 종류, 패키지는 그런 식으로 함수를 찾을 필요가있다. 기능 및 객체 지향 프로그래밍과 마찬가지로,이 두 가지 방법처럼, 아무도 적절한 장면 각각은, 높거나 낮은 없습니다.

추천

출처www.cnblogs.com/wang_yb/p/11613069.html