• 최초 작성일: 2002-12-03
  • 최종 수정일: 2026-09-30
  • 조회수: 16 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: Application.Caller 속성에 대하여

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

Application 오브젝트가 데리고 있는 똘마니 중에 Caller라고 하는 아주 기특한 녀석이 있습니다. 우리 말로 '부른 놈?'... 좀 이상하군요. 그럼 '부른 녀석?'... 역시나 이상하군요. 해서… 그냥 Caller라고 부르도록 하지요.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

Application.Caller 속성에 대하여

핵심 요약: Application.Caller 속성

Application.Caller는 프로시저에 연결된 개체의 이름을 알려 줍니다. 이 이름을 이용하면 클릭한 도형이 무엇인지 알아내 하나의 프로시저로 여러 개체를 제어할 수 있습니다.

  • 1단계: 워크시트의 도형에 이름을 정의하고 같은 매크로를 연결합니다.
  • 2단계: Application.Caller로 클릭한 개체의 이름을 얻습니다.
  • 3단계: Ovals나 DrawingObjects에 그 이름을 전달해 색, 크기, 표시 여부를 지정합니다.

Step 1: 개체에 이름 정의하기

우리가 워크시트 상에 어떤 도형을 그리거나 버튼을 하나 만들어 넣었을 경우, 삽입된 도형이나 버튼에 이름을 정의해 줄 수 있습니다.

도형 중 하나를 선택하고 이름 상자를 보면 정의된 이름이 나타납니다.

이름은 개체를 선택하고 '삽입-이름-정의' 메뉴를 선택하여 주거나, 개체를 선택한 다음 '이름 상자'에 바로 이름을 입력하고 Enter 키를 누르면 정의됩니다.

워크시트의 도형을 선택하자 이름 상자에 도형에 정의된 이름이 표시된 화면
아이엑셀러

Step 2: Application.Caller가 알려 주는 것

Application 오브젝트의 Caller 속성은 어떤 프로시저에 연결되어 있는 오브젝트의 이름을 알려주는 역할을 합니다.

예제의 각 도형을 클릭하면 해당 개체의 이름이 메시지로 나타납니다. 각 도형에는 아래의 코드가 연결되어 있습니다. 아주 싱겁기 짝이 없습니다.

Sub AppCallerTest()
    MsgBox "내 이름은 """ & Application.Caller & """입니다"
End Sub

Step 3: 클릭한 도형의 색 바꾸기

이번에는 원을 클릭할 때마다 원 내부의 색깔이 바뀌도록 해 봅니다.

Sub AppCallerTest1()
    ActiveSheet.Ovals(Application.Caller).Interior.ColorIndex = Int(Rnd * 56)
End Sub

역시나 Application.Caller 속성을 이용하였습니다. 만약 Caller 속성을 모르고 있다면 이런 작업이 가능할까요? 물론 가능이야 하겠지만 머리털이 한 웅큼 빠져가며 훨씬 비효율적인 방법을 찾아야 할 것입니다.

Step 4: 그림 크기와 옆 도형 표시 전환하기

조금 더 응용해 보겠습니다. 예제에서는 사진을 클릭할 때마다 사진이 커졌다 작아졌다를 반복하고, 사진 옆의 설명 도형도 나타났다 사라지기를 반복합니다. 이 도형은 삭제하면 코드에서 오류가 납니다.

Sub AppCallerTest2()

    Dim objPicture As Object
    Set objPicture = ActiveSheet.DrawingObjects("AboutMe")
    ' 사진에 대한 설명이 담긴 개체를 objPicture라는 오브젝트형 변수에 담고…

    With objPicture
        .Visible = Not .Visible
        ' Visible 속성을 사용하여 개체가 번갈아가며 보였다 안보였다 하도록 설정합니다.

        If .Visible Then
            With ActiveSheet.DrawingObjects(Application.Caller)
            ' 만약 objPicture 개체가 보인다면 Application.Caller 속성을 이용하여 나를 불러온 녀석(그러니까
            ' 위의 사진이 되겠지요?)의 크기와 높이를 아래와 같이 설정합니다.
            ' 그 나머지 부분은 설명이 필요없을 듯…

                .Width = 200
                .Height = 215
            End With
        Else
            With ActiveSheet.DrawingObjects(Application.Caller)
                .Width = 50
                .Height = 50
            End With
        End If
    End With

End Sub

설명 도형(AboutMe)의 Visible 속성을 번갈아 바꾸고, 도형이 보이면 Application.Caller로 알아낸 사진의 크기를 크게, 보이지 않으면 작게 지정합니다.

Application.Caller 속성은 아주 중요한 속성이므로 잘 익혀두시고 많이 응용해 보시기 바랍니다. 혹 아직도 '이것을 어디에 써 먹는단 말인가?' 싶은 분들은 전자계산기를 한번 만들어 보시기 바랍니다.

다음 시간에 또…

정리 — Application.Caller 활용 예

구분 사용한 코드 역할
이름 확인 MsgBox Application.Caller 클릭한 개체 이름 표시
색 바꾸기 ActiveSheet.Ovals(Application.Caller).Interior.ColorIndex 원 내부 색 변경
크기 바꾸기 DrawingObjects(Application.Caller).Width / .Height 클릭한 그림 크기 변경
표시 전환 .Visible = Not .Visible 도형 표시/숨김 전환
개체 이름 정의 이름 상자에 이름 입력 개체 구분

자주 묻는 질문 (FAQ)

Q1. Application.Caller는 무엇을 돌려주나요?

프로시저에 연결되어 있는 개체의 이름입니다. 도형이나 버튼을 클릭해 매크로가 실행되면 그 개체의 이름을 알 수 있습니다.

Q2. 도형의 이름은 어떻게 정의하나요?

개체를 선택하고 이름 상자에 이름을 입력한 다음 Enter 키를 누르거나, 삽입-이름-정의 메뉴를 사용합니다.

Q3. Application.Caller를 어디에 활용하나요?

여러 개체가 하나의 프로시저를 공유해야 하는 경우에 유용하며, 전자계산기의 숫자 버튼 처리가 대표적인 활용 예입니다.

마치며

Application.Caller는 매우 중요한 속성이므로 잘 익혀 두고 다양하게 응용해 보시기 바랍니다.