본문 바로가기
PROGRAMMING/EXCEL&ACCESS

[엑셀 VBA] 매크로 안에서 매크로 호출하기 (연속으로 매크로 실행)

by Hey Nary 2025. 2. 18.
728x90
반응형

Call 함수를 이용한 매크로 호출

VBA에서는 Call 키워드를 사용하여 한 매크로에서 다른 매크로를 호출할 수 있습니다.

이를 활용하면 코드의 재사용성을 높이고, 복잡한 작업을 더 체계적으로 관리할 수 있습니다.

연속으로 여러 매크로를 이어서 작성, 다시 말해 한 매크로 안에 여러 메서드를 정의할 수도 있지만 관리가 어렵습니다.

아래와 같이 매크로 내에서 매크로를 호출하여, 각 매크로의 관리 용이성도 확보하고 귀찮음도 타파해봅시다.

Call 함수 기본 문법

Call 매크로이름

혹은 Call 없이도 호출할 수 있습니다.

매크로이름

Call을 활용한 예제

Sub 첫번째매크로()
    MsgBox "첫 번째 매크로 실행됨"
    Call 두번째매크로 ' 두 번째 매크로 호출
End Sub

Sub 두번째매크로()
    MsgBox "두 번째 매크로 실행됨"
End Sub

실행 방식:

  1. 첫번째매크로를 실행하면 메시지 박스에 "첫 번째 매크로 실행됨"이 표시됩니다.
  2. 이후 Call 두번째매크로가 실행되면서 "두 번째 매크로 실행됨" 메시지가 표시됩니다.

Call을 활용한 매개변수 전달

Sub 첫번째매크로()
    Dim 숫자 As Integer
    숫자 = 10
    Call 두번째매크로(숫자) ' 숫자 값을 전달
End Sub

Sub 두번째매크로(값 As Integer)
    MsgBox "전달받은 값: " & 값
End Sub

실행 방식:

  1. 첫번째매크로 실행 → 숫자 = 10 설정
  2. Call 두번째매크로(숫자) 실행 → 두번째매크로로 값 10 전달
  3. 메시지 박스에 "전달받은 값: 10" 출력

 

Private Sub의 기능

그런데, 어차피 첫번째 매크로만 실행할텐데 매크로 대화상자에서 호출되는 매크로들은 안 보이게 할 수 없을까요?

이 때는 호출되는 매크로들 앞에 "Private"을 붙여주면 됩니다.

 

VBA에서 Private Sub는 특정 범위 내에서만 실행될 수 있는 서브루틴을 정의할 때 사용됩니다.

Private 키워드는 해당 서브루틴이 현재 모듈 내에서만 호출될 수 있도록 제한하는 역할을 합니다.

 

Private Sub 기본 문법

Private Sub 서브루틴이름()
    ' 실행할 코드 입력
End Sub

Private Sub의 주요 특징

  1. 모듈 내에서만 실행 가능
    • Private Sub로 정의된 서브루틴은 다른 모듈에서는 호출할 수 없음.
    • 같은 모듈 내에서만 호출 가능.
    • 매크로 대화상자에 표시되지 않음.
  2. 워크시트 이벤트와 함께 사용 가능
    • Private Sub는 워크시트 이벤트(예: 셀 변경, 클릭 등)와 자주 사용됨.

Private Sub 예제 1: 일반적인 사용

Private Sub 숨겨진매크로()
    MsgBox "이 매크로는 현재 모듈 내에서만 실행됩니다."
End Sub

Sub 실행매크로()
    Call 숨겨진매크로 ' 같은 모듈 내에서 호출 가능
End Sub

실행매크로를 실행하면 숨겨진매크로가 실행되지만, 다른 모듈에서는 호출할 수 없습니다.

Private Sub 예제 2: 워크시트 이벤트 활용

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "셀 값이 변경되었습니다: " & Target.Address
End Sub

✅ 이 코드는 워크시트의 셀 값이 변경될 때 자동으로 실행됩니다.

 

아래 화면에서 다시 한번 Private Sub의 효과를 확인합시다.

수정 전
수정 전
수정 후

728x90
반응형