VBA 베이스 - 함수 및 모듈

3109 단어

개요


일반적인 VBA 프로그램에 대해서 말하자면, 아마도 하나 또는 몇 개의 함수만 있으면 될 것이다.어쨌든 VBA는 excel의 보조 도구로 사용될 뿐이다.
그러나 VBA가 갈수록 많아지면서 하나의 공정으로 관리하는 것이 필요하다. 하나의 코드 공정의 기초는 바로 함수와 모듈이다.

함수


VBA의 함수는 2가지가 있는데 하나는 Sub이고 하나는 Function이 VBA에 있는데 사실은 Sub를 과정이라고 하고 함수라고 하지 않는다. 그것들의 차이는 두 가지가 있다.
  • Function에 반환 값이 있고 Sub에는 없습니다
  • Sub는 직접 실행할 수 있으며, Function은 호출되어야 실행할 수 있습니다

  • Sub 및 Function의 예는 다음과 같습니다.
     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

    함수의 반환값은 함수 이름 자체에 결과를 부여하는 것입니다Add=a+b, 그렇지 않으면 반환값은 항상 0

    모듈


    모듈화의 목적은 복용하는 것이다. 일부 통용되는 기능에 대해 우리는 모듈로 봉인하여 내보낼 수 있다.이렇게 하면 서로 다른 VBA 공정에서 기존의 모듈을 가져오면 반복적으로 바퀴를 만들 필요가 없다.
    모듈의 내보내기는 매우 편리하다. 대응하는 모듈에서 오른쪽 단추를 누르면 내보내면 된다. 내보내면 하나의 *이다.bas의 파일입니다.

    일반 모듈


    일반 모듈은 간단명료하다. 우리가 이전에 쓴 Sub나 Function은 사실 모두 기본적인 일반 모듈에 있다.다음 예시 프로젝트에서 저는 2개의 모듈을 만들었습니다. 각각 Main과 MyMath입니다. Main은 테스트에 사용되고 MyMath는 나중에 다시 사용하기 위한 함수입니다.
  • Main 모듈:
    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
  • Main 모듈을 실행한 결과는 다음과 같습니다
    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
  • 테스트에 사용되는 Main 모듈입니다. 이것은 일반 모듈입니다
     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

  • 총결산


    그런 방식으로 봉인하든지 간에 봉인이 필요한 기능이 그런 방식에 적합하다는 것을 보아야 한다.이 두 가지 방식은 함수식과 대상을 대상으로 프로그래밍하는 것처럼 누가 높고 낮은지 각자 적합한 장면이 없다.

    좋은 웹페이지 즐겨찾기