시작하며
vba에서(거의 모든 언어도 마찬가지겠지만) 자주 사용되는 순환문은 for문입니다.
for문 사용방법에는 주로 두 가지가 있습니다
for int타입변수 = 정수 to 정수 (step 정수)
for each 자식객체변수 in 부모객체변수
for i = a to b (step c)
풀어서 설명하면 int변수를 선언하고 그 변수가 순환하게 되는 정수범위를 입력해 줍니다.
여기서 to키워드는 시작지점의 정수와 끝지점의 정수 사이에 넣어 for문을 완성합니다.
추가로 step키워드가 있는데 생략이 가능하고 입력한다면 그 정수만큼의 간격으로 순환하라는 의미입니다.
예를 들어 아래코드와 같이 입력하였습니다.
Sub int_for()
Dim i as integer
for i = 1 to 10
cells(i,1) = i
next
End sub
위의 VBA 코드는 "int_for"라는 이름의 서브루틴을 정의하고 있습니다. 이 코드는 엑셀 시트의 열 A에 1부터 10까지의 숫자를 채우는 작업을 수행합니다.
여기서 각 줄을 설명하겠습니다:
- Sub int_for(): 이 코드 블록은 "int_for"라는 이름의 서브루틴을 시작합니다. 서브루틴은 일련의 코드 블록을 그룹화하여 특정 작업을 수행하는 데 사용됩니다.
- Dim i As Integer: 정수형 변수 "i"를 선언합니다. 이 변수는 반복문에서 사용될 것입니다.
- For i = 1 To 10: "For" 키워드를 사용하여 반복문을 시작합니다. "i" 변수를 1에서 10까지 1씩 증가시키며 반복합니다.
- Cells(i, 1) = i: 반복문 내에서 현재 "i" 값을 엑셀 시트의 A 열에 있는 "i" 번째 행에 할당합니다. 즉, 각 행에는 1부터 10까지의 숫자가 순서대로 채워집니다.
- Next: "For" 반복문의 끝을 나타냅니다. 여기서 "Next" 키워드는 반복문이 종료될 때까지 반복되는 코드 블록의 끝을 지정합니다.
- End Sub: 서브루틴의 끝을 나타냅니다. 이것은 VBA 코드 블록의 끝을 나타내며, 여기서는 "int_for" 서브루틴의 끝을 나타냅니다.
위 사진은 예제코드를 실행했을 때 출력화면입니다.
실행 후 빨간박스 범위내에 1에서 10까지 출력되는 것을 볼 수 있습니다.
for each rng in rngA
이 형태는 주어진 컬렉션 또는 범위에서 각 요소에 대해 반복하는 것을 목적으로 합니다. 여기서 "rngA"는 일반적으로 컬렉션 또는 범위를 나타내는 변수명입니다.
여기서 "rng"는 반복되는 각 요소에 대한 임시 변수를 나타냅니다. 이 변수는 각 반복에서 컬렉션의 요소를 나타내는 역할을 합니다.
아래는 간단한 예시입니다.
Sub range_for()
Dim rng As Range
Dim rngA As Range
Set rngA = Range("a1:a10")
i = 1
For Each rng In rngA
rng = i
i = i + 1
Next
End Sub
이제 각 줄을 자세히 살펴보겠습니다:
- Sub range_for(): 이 코드는 "range_for"라는 서브루틴(매크로)의 시작을 나타냅니다.
- Dim rng As Range 및 Dim rngA As Range: 각각 "rng"와 "rngA"라는 두 개의 Range 형식 변수를 선언합니다.
- Set rngA = Range("a1:a10"): "a1:a10" 범위를 "rngA"에 할당합니다. 이는 엑셀 시트에서 A1부터 A10까지의 셀 범위를 의미합니다.
- i = 1: 반복문에서 사용될 변수 "i"를 1로 초기화합니다.
- For Each rng In rngA: "rngA" 범위 내의 각 셀에 대해 반복하는 시작 지점을 정의합니다.
- rng = i: 현재 반복 중인 셀에 변수 "i"의 값을 할당합니다. 이를 통해 A1부터 A10까지 각 셀에 1부터 10까지의 숫자가 할당됩니다.
- i = i + 1: 변수 "i"를 1씩 증가시킵니다. 이는 각 셀에 할당될 숫자가 1부터 10까지 순차적으로 증가하도록 합니다.
- Next: 반복문의 마지막 지점을 나타내며, 다음 셀에 대한 반복을 시작합니다.
- End Sub: 서브루틴(매크로)의 끝을 나타냅니다.
이렇게 작성된 코드는 "a1:a10" 범위 내의 각 셀에 1부터 10까지의 숫자를 순차적으로 할당합니다.
실행하면 위 사진의 빨간 박스와 같이 출력이 됩니다.
마치며
vba에는 for문 외에도 다양한 반복문이 있습니다.
while문, do while문 등 입니다.
여기에 대해서는 이후 글에서 적어보겠습니다.
이상 글을 마치며 다음에 뵐게요.