본문 바로가기

100_Apps/VBA, Excel, Google spreadsheet

📌059 Excel VBA 📌 찾기 - For_Each_Next_바꾸기

비슷하지만 구별이 필요합니다

 

이들 모두 는 순환문입니다.

반복하는 명령을 내릴 때 사용합니다. 
코드 구문은 다음과 같아요...

설명하면서 이해를 해 보겠습니다.
컬렉션 개체는 워크북, 워크시트, 범위, 도형, 차트, 배열 등 여러 가지가 있습니다

■ 컬렉션의 개체를 순환하는 작업

(※ 컬렉센이 궁금한 경우, 여기를 클릭하여 읽어보세요)

컬렉션의 개체를 순환하면서 즉, 하나씩 하나씩 순환하면서 실행명령1, 실행명령2를 작업합니다. 
전체범위(컬렉션 개체)로 지정된 곳 중에서(In) 어느 한 곳(Each)을 방문하여
변수(개체변수)에 할당을 한 후에
실행명령1, 실행명령2를 실행하고,
전체범위(컬렉션 개체)로 지정된 곳 중에서(In) 다음(Next) 한 곳을 방문하면서 순환 방문을 한다는 뜻입니다.

위의 내용을 좀 더 개념적인 단어를 써서 표현해보겠습니다.
컬렉션의 개별 개체를 순환하면서 개체변수에 할당해 작업합니다. 개체변수 컬렉션 사이에는 In 키워드를 사용해야 개체변수가 컬렉션 내부의 개체임을 표시합니다. Next 문에서 다음 개체를 할당할 개체변수를 표시하거나 생략할 수 있습니다.

■ 배열 요소를 순환하는 작업

For Each ... Next 문은 컬렉션의 개체를 순환하는 작업 이외에도
배열 요소를 순환하면서 작업을 할 수 있습니다

*주의 사항:  배열변수의 데이터 형식은 반드시 Variant 형식이어야 합니다

 

예제를 통해서 알아보겠습니다

다음과 같이 되도록 코드를 작성하는 연습을 하겠습니다

10개의 시트가 있는 이 워크북(This Workbook)은 컬렉션이며, 시트(Sheets) 10개는 컬렉션의 개체입니다. 본격적으로 코드를 작성하는 것을 단계적으로 설명하겠습니다.

Sub For_Each_Next_바꾸기()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Worksheets
  If sh.Name = "sheet1" Then
  Else
       sh.Visible = True
  End If
Next
Sheet1.Select

Application.ScreenUpdating = True End Sub

 

▶ 단계 1: 《전체 범위》를 정합니다

전체범위는 컬렉션입니다. 따라서 이 워크북(This Workbook)은 컬렉션이며, 워크북(This Workbook) 전체범위가 됩니다 
Alt+F11 단축키를 사용하여 VBA편집기를 실행한 후,
삽입(I) -> 모듈(M) 메뉴를 순차적으로 선택하여
다음과 같이 입력하겠습니다.

 

제 머리 속을 보여드리겠습니다

▶ 단계 2: 변수》를 정합니다

 

 

 

 

 

 

반응형