고생많으십니다. 저번 질문에 대한 답변을 상세하게 잘 해주셔서 감사드립니다.
27번 문제에서 궁금한 점이 있어 문의드립니다.
문제의 보기에서 "'성적현황', '학번', '학과'는 상대 참조로 기록되었다" 라고 2번 보기에 나와 있는데, 상대 참조라는 것을 알 수 있는 근거가 무엇인지 문의드립니다.
또한 VBA 코드 상에서 절대참조와 상대참조로 기록된 것을 구분하는 방법도 알려주시면 감사드리겠습니다.
안녕하세요.
②번이 상대 참조인 근거는 Offset을 사용하고 있기 때문입니다.
예를 들어
ActiveCell.Offset(0, 1).Range("A1").Select
는 현재 선택된 셀을 기준으로 오른쪽 한 칸 이동하라는 의미입니다. 즉, 특정 셀 주소를 고정해서 지정한 것이 아니라 현재 셀 위치를 기준으로 이동하므로 상대 참조입니다.
반면
Range("C2").SelectRange("A3").Select
처럼 셀 주소를 직접 지정한 경우에는 현재 선택 위치와 관계없이 항상 해당 셀을 선택하므로 절대 참조로 볼 수 있습니다.
정리하면 VBA 매크로 기록에서는 보통 다음과 같이 구분하면 됩니다.
ActiveCell.Offset(...)→ 현재 셀을 기준으로 이동하므로 상대 참조Range("A1"),Range("C2")처럼 주소를 직접 지정 → 절대 참조
따라서 이 문제에서 ‘성적현황’, ‘학번’, ‘학과’는 Offset을 이용해 위치를 이동하면서 입력하므로 상대 참조로 기록된 것입니다.
즐거운 하루 되세요.
-
관리자2026-10-27 09:43:53
안녕하세요.
②번이 상대 참조인 근거는
Offset을 사용하고 있기 때문입니다.예를 들어
ActiveCell.Offset(0, 1).Range("A1").Select는 현재 선택된 셀을 기준으로 오른쪽 한 칸 이동하라는 의미입니다. 즉, 특정 셀 주소를 고정해서 지정한 것이 아니라 현재 셀 위치를 기준으로 이동하므로 상대 참조입니다.
반면
Range("C2").SelectRange("A3").Select처럼 셀 주소를 직접 지정한 경우에는 현재 선택 위치와 관계없이 항상 해당 셀을 선택하므로 절대 참조로 볼 수 있습니다.
정리하면 VBA 매크로 기록에서는 보통 다음과 같이 구분하면 됩니다.
ActiveCell.Offset(...)→ 현재 셀을 기준으로 이동하므로 상대 참조Range("A1"),Range("C2")처럼 주소를 직접 지정 → 절대 참조
따라서 이 문제에서 ‘성적현황’, ‘학번’, ‘학과’는
Offset을 이용해 위치를 이동하면서 입력하므로 상대 참조로 기록된 것입니다.즐거운 하루 되세요.