엑셀 중급_VBA 와 매크로 (15)

엑셀의 함수 계산은 엑셀 셀의 위치를 기준으로 하여 계산 되고 특별한 지정이 없으면 엑셀 함수의 기본은 상대 참조 입니다. 엑셀 매크로에서 상대 참조와 절대 참조의 개념은 함수와 크게 다르지 않습니다. 절대 참조로 매크로를 기록하면 내가 현재 있는 마우스 커서의 위치가 중요하지 않고 절대 적인 위치로 매크로가 기록 됩니다. 그리고 엑셀 함수와는 달리 매크로의 기본 설정은 절대 참조 입니다. 그러나 필요한 상황에 따라 반드시 매크로의 상대 참조의 개념을 알아야 할 필요가 있습니다. 매크로에서 상대 참조로 기록하게 되면 내 마우스의 커서가 있는 셀의 위치가 중요 해 집니다. 두 가지 매크로를 VBA코드로 변환해 그 차이점을 알아 보도록 하겠습니다.

15연습파일.xlsx

15연습파일_완성본.xlsm

  1. 절대 참조, 상대 참조로 기록 하기

    엑셀 VBA를 실험을 통해서 공부 할 때 듀얼 모니터라면 각 각의 화면에 하나의 창을 동시에 띄우거나 또는 하나의 모니터라면 각각의 창을 분리해 동시에 띄어 놓으면 내가 무슨 행동을 할 때 마다 실시간으로 어떻게 코드로 바뀌는지 확인 할 수 있습니다. 엑셀 매크로의 기본을 절대 참조입니다. 먼저 절대 참조로 E5에서 A1셀로 이동하는 매크로가 VBA로 어떻게 변하는지 살펴 보겠습니다.

     

    Alt + F11으로 VBA창을 열어서 동시에 살펴 보기 좋도록 적당히 배열을 합니다.

     

     

    매크로 기록을 누르고 이름을 절대 참조로 하겠습니다.

     

     

    VBA창에 기록 녹화가 시작된 것이 보입니다.

     

     

    Range("A1").Select 라는 것이 보입니다. 먼지는 몰라도 이게 A1셀을 선택하라는 명령어 이겠죠. 이번에는 상대 참조로 기록을 선택 합니다. 상대 참조 절대 참조 옵션은 보기 탭 >> 매크로 에서 할 수 있습니다. 그리고 마우스 커서를 E5에 다시 위치 합니다.

     

     

    그리고 다시 매크로 기록을 클릭 합니다.

     

     

    먼지는 모르겠지만 훨씬 복잡한 상대 참조 구문이 기록 되었습니다. 상태 표시줄의 매크로 정지 버튼을 누릅니다.

     

    엑셀의 VBA를 몰라도 함수를 알면 해설 할 수 있는 부분이 많습니다. VBA본문에 보면 Offset(-4,-4)라는 것이 보입니다. 엑셀 함수에서 Offset 함수는 참조는 셀을 기준으로 행 열 몇 칸으로 움직이는 것을 정해 주듯이 VBA에서도 같은 뜻입니다.

    즉 현재 오프셋 상대 참조는 현재 선택된 셀을 기준으로 왼쪽으로 4, 위로 4 칸만큼 이동 하라는 의미 입니다.

     

  2. 상대 참조 절대 참조 매크로 실행 해 보기

    지금 기록한 매크로를 확인해 보기 위해 커서를 F5에 에 이동하고 두 매크로를 각 각 실행해 보겠습니다.

     

    F5에 커서를 위치 합니다.

     

     

    절대 참조의 매크로를 실행하면 바로 A1 셀로 이동 합니다.

     

    즉 절대 참조로 기록하고 A1셀을 클릭하면 기록되는 VBA는 현재 커서의 위치에 상관없이 무조건 A1셀로 이동 시킵니다.

     

    이번에는 상대 참조 매크로를 실행 합니다. F5에서 커서는 왼쪽으로 4칸, 위로 4칸을 이동 합니다.

     

    상대 참조로 기록하고 마우스를 클릭하면 현재 있는 셀의 위치를 기준으로 내가 몇 칸을 움직였는지 기록 합니다.

     

    상대 참조, 절대 참조의 개념은 간단하지만 함수에서처럼 매우 중요한 개념 입니다. 내가 원하는 결과값을 정확히 얻기 위해서는 상대 참조인지 절대 참조인지 매크로 녹화 전에 분명히 판단해야 합니다.


+ Recent posts