[ 들어가며 ]
오늘은 엑셀의 시트에 접근하는 방법에 대해
간단한 예시로 알아보겠습니다.
엑셀에서 VBA를 사용하여 시트에 접근하는 방법에는
여러가지가 있습니다.
워크시트의 인덱스를 사용하거나
Activesheet를 사용할 수도 있습니다.
그리고 시트의 이름을 통해서도 접근할 수 있고,
코드네임을 사용해서 접근할 수 도 있습니다.
오늘은 코드네임을 사용하여 접근하는 방법에 대해 알아보고
시트이름을 통해 접근하는 방법과 같이 비교해 보겠습니다.
[ 코드네임이란? ]
VBA에서 워크시트의 코드네임은
워크시트를 내부적으로 참조하는 데 사용되는 속성입니다.
코드네임은 워크시트가 생성될 때 자동으로 부여되며,
사용자가 엑셀의 워크시트의 이름을 변경하더라도
코드네임은 변경되지 않습니다.
비유적으로 설명하면
홍길동이라는 사람이 있다고 했을 때
[ 홍길동의 집 ]은 시트의 이름이고,
[ 홍길동의 집이 있는 곳의 주소 ]는 코드네임이라고 생각하시면
될 것 같습니다.
건물의 주소는 건물이 철거 되지 않는 이상 잘 안바뀌지만,
건물에 사는 사람은 자주 바뀔 수도 있기 때문입니다.
이러한 특성 때문에
워크시트의 순서나 이름에 영향을 받지 않고
안정적으로 워크시트를 참조할 수 있게 해줍니다.
만약 워크시트의 이름이 변경될 가능성이 있다면,
코드네임을 사용하는 것이 더 안정적일 수 있습니다.
[ 코드네임 확인하는 방법 ]
코드네임을 확인하는 방법은
VBA 에디터를 열어서 확인할 수 있습니다.
단축키는 [ Alt + F11 ]입니다.
간혹 윈도우의 다른 프로그램을 여는데 해당 단축키가 사용중이라면
[ 개발도구 ] → [ Visual Basic ]를 클릭하시면 됩니다.
VBA 에디터가 나타나면
아래 그림처럼 시트를 선택해 줍니다.
그럼 [ 속성 ] 부분에서
코드네임과 시트이름의 확인이 가능합니다.
파란색 네모는 코드네임이고
보라색 네모는 시트이름입니다.
또한 위 빨간색 네모의
괄호 밖의 부분이 코드네임이고
괄호 안의 부분이 시트이름입니다.
시트 이름을 바꿔보겠습니다.
이렇게 시트이름을 바꾸면 아래 그림과 같이
해당 부분이 바뀌게 됩니다.
[ 코드네임의 특징 ]
시트의 이름이나 순서가 바뀌더라도
코드네임은 사용자가 바꾸지 않는 이상
변하지 않습니다.
아래 그림과 같이 시트를 만들어 보겠습니다.
그리고 [ 코드네임 ] 시트의 코드네임은
[ CodeName ]으로 하겠습니다.
이 상태서 시트의 이름도 바꿔보고
순서도 바꾸어 보겠습니다.
시트이름을 기존 [ 코드네임 ]에서 [ 바뀐이름 ]으로 바꾸었고
순서도 두번째에서 세번째로 옮겼습니다.
그렇다고 해도 아래 그림과 같이
코드네임은 변하지 않습니다.
[ 코드네임으로 시트에 접근하기 ]
간단하게
시트이름을 사용해서 시트에 접근하는 코드와
코드네임을 사용해서 시트에 접근하는 코드를
살펴보겠습니다.
먼저 시트이름을 사용해서
시트에 접근하는 코드입니다.
Sub AccessBySheetName()
Dim ws As Worksheet
Set ws = Worksheets("바뀐이름")
ws.Range("A1").Value = "Hello, World!"
End Sub
다음은 코드네임을 사용해서
시트에 접근하는 코드입니다.
코드네임으로 [ CodeName ]을 사용하는 것은 적절치 않은 것 같아
다른 것으로 변경하고 진행했습니다....
코드네임을 [ TestSheet1 ]으로 변경하고 진행했습니다.
Sub 코드네임()
TestSheet1.Range("A1").Value = "Hello, World!"
End Sub
시트의 이름이나 순서를 통해 접근하는 코드를 작성했을 때
여러사람이 사용하는 경우라면
시트의 이름이나 순서를 임의로 바꿀 경우
에러가 발생하거나,
엉뚱한 결과가 나타날 수도 있습니다.
코드네임을 사용하시면 이런 상황을 방지 할 수 있습니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA Range()로 하나의 셀 또는 범위 선택하는 여러가지 방법 (0) | 2024.08.04 |
---|---|
엑셀 VBA의 배열 대신 Collection 세번째(시트 데이터 읽기, 불러오기) (0) | 2024.02.16 |
엑셀 VBA의 배열 대신 Collection 두번째(For문, For~Each문과 결합한 Collection 활용) (0) | 2024.02.13 |
엑셀 VBA의 배열 대신 Collection 첫번째(선언 및 아이템 추가, 삭제, 개수 확인) (0) | 2024.02.01 |
엑셀 VBA 단어 채우기, VBA 좀 더 편리하게 사용하기 (2) | 2024.01.31 |