Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Understanding Collection Object |Worksheet|Collection|Add|For|Each|Next|In|

집합체오브젝트 역시 정보를 체계적으로 관리하는 하나의 방법

집합체오브젝트 또한 정보를 체계적으로 관리하기 위한 방법이고
체계적으로 관리하려고 생각하다 보면 당연히 나오는 방법이다
예를 들어 통합문서에는 여러개의 워크시트가 들어 있다
Worksheet라는 같은 오브젝트가 여러개 있다면
이것을 누군가가 한꺼번에 관리할 필요가 있을것이다
그래서 만들어진것이 Collection오브젝트인것이다
아래 버튼을 크릭해보시기 바란다

Worksheets





Collection Object의 Add 메소드를 실행하면 해당 집합체오브젝트의
구성요소가 계속 추가 되는것이다
위의 경우 통합문서의 Worksheets 집합체오브젝트는 추가되는 한장의 워크시트(Worksheet)
오브젝트를 관리하게 되는것이다
집합체오브젝트는 특별히 하는 일은 없지만 같은 정보(같은 오브젝트)를 모아서
보관관리를 해주는 그런 역할로 보시면 앞으로 나올 집합체오브젝트를 모두
이해한것이 될것이다
관리한다는 의미는 추가하고,삭제하고,몇개인지 알려주고 정도가 기본이고
오브젝트에 따라서 특별한 기능(속성,메소드)이 추가된것이 있다
또한 각각의 집합체오브젝트들은 각각의 성격에 따라 Add할때
매개변수를 전달한다
아래의 경우는 Worksheet를 추가할때 전달하는 매개변수들
(선택적,Optional 매개변수라서..특별히 값을 주지 않아도 되지만)
특정한 집합체오브젝트는 Add메소드의 매개변수를 필수적으로
전달하여야 할 경우도 있다는점..!!기억하시고



여러분의 통합문서(WorkBook오브젝트)에 WorkSheet오브젝트가
5장 있다고 가정하고
5장중에서 3번째위치한 Worksheet오브젝트의 B5셀에 35라는
값을 넣고 싶다면 어떻게 가야하는지 짐작이 갈것이다

Worksheets(3).Range("B5").Value=35

라고 하면 원하는 시트의 원하는 셀에 값을 입력한셈이 된다

거의 모든 오브젝트는 이름을 갖고 있다

세상의 만물이 이름을 갖고 있듯이 컴퓨터속의 오브젝트들도
이름을 붙여주는 습관을 갖는것이 좋다
이름을 잘 사용할줄 아는것이 프로그래밍을 잘하는
요령이기도 하다
위에서 3번째워크시트의 B5셀에 접근하기를

Worksheets(3).Range("B5").Value=35

라고 했었다..
번호는 좀 구체적이지 못하고 구별하기도 힘들다
세번째라는 인식표로 찾는것 보다는 이름으로 접근하는것이
좀더 바람직하지 하다
3번째 시트이름이 "Sheet3"라고 한다면

Worksheets("Sheet3").Range("B5").Value=35

로 접근할수 있는것이다
둘중의 하나!!번호로 접근하던가..이름으로 접근하던가..
워크시트를 만들면서 이름을 붙여주기를 시뮤레이션해보자
아래의 버튼크릭!!

Worksheets




집합체오브젝트내의 각각의 오브젝트에 접근하는 순환문을

For Each 오브젝트 In 집합체오브젝트
    어떤..작업..!!
Next

와 같이 돌린다
다음을 복사하여 모듈시트에 붙여넣고 실행해보시기 바란다

Sub ChangeSheetName()
Dim shtX As Worksheet
Dim iX As Integer
For Each shtX In Worksheets
    iX = iX + 1
    shtX.Activate
    MsgBox shtX.Name
    shtX.Name = "MySheet_" & iX
Next
End Sub

각각의 시트를 활성화시키면서(Activate메소드)
각각의 시트의 이름속성을 읽어서 메시지박스에 나타낸후
각각의 시트의 이름을 바꾸었다
이렇게 집합체오브젝트의 각각의 원하는 오브젝트에
일을 시키거나 해당오브젝트에서 정보를 읽어오던가
해당 오브젝트에 정보를 쓰거나 하는것이 엑셀프로그래밍이다
변수 shtX의 정보타입은 Worksheet오브젝트라고 한점..유심히 보시고

직접실행창에 위의 버튼에 있는 명령을 해보시기 바란다
Worksheets.Add.Name="MySheet_" & Worksheets.Count+1
이 구문은 아래의 것이나 마찬가지다

Dim shtX As Worksheet
Set shtX=Worksheets.Add
shtX.Name="MySheet_" & Worksheets.count

혹은

With Worksheets.Add
  .Name="MySheet_" & Worksheets.Count
End With