문제
아래는 워크시트 [A1] 셀에서 [매크로 기록]을 클릭하고 작업을 수행한 과정을 Visual Basic Editor의 코드 창에서 확인한 결과이다. 다음 중 이에 대한 설명으로 옳지 않은 것은?
① 매크로의 이름은 '매크로2'이다. ② '성적현황','학번','학과'는 상대 참조로 기록 되었다. ③ [A3] 셀을 클릭하고 매크로를 실행한 후의 셀 포인터 위치는 [A5] 셀이다. ④ [B3] 셀을 클릭하고 매크로를 실행한 후의 [C3] 셀의 값은 '성적현황'이다.
정답
3번
해설
정답: 3. 코드 마지막 줄이 Range("A3").Select로 절대 참조 이동이므로, 어느 셀에서 실행하든 매크로 종료 후 셀 포인터는 항상 [A3]에 위치한다. [A5]가 아니다.
오답 풀이
- 1번: 프로시저 선언이 Sub 매크로2()이므로 매크로 이름은 '매크로2'로 옳다.
- 2번: '성적현황'·'학번'·'학과'는 ActiveCell.Offset()으로 상대 위치에 입력되므로 상대 참조 기록이 맞아 옳다.
- 3번: 마지막 Range("A3").Select는 절대 이동이므로 항상 [A3]에서 끝난다. [A5]는 옳지 않다.
- 4번: [B3]에서 실행하면 Offset(0,1)로 [C3]에 '성적현황'이 입력되므로 옳다.
보충 개념 Offset 기반 이동은 상대 참조, Range("주소")는 절대 참조이다. 매크로 기록 시 '상대 참조로 기록' 토글에 따라 두 방식이 섞일 수 있다.