_VBA 프로그램을 작성하는 경우 동일한 작업을 여러 번 실행하려는 경우 VBA for 루프를 사용하여이 작업을 수행 할 수 있습니다. VBA는 순차 프로그래밍 언어입니다. 읽을 코드 줄이 더 이상 없을 때까지 각 코드 줄이 위에서 아래로 실행됩니다. 돌아가서 작업을 수행하려면 매크로 코드를 사용하여 강제해야합니다.

루프로 결과를 얻습니다 ._

VBA의 For 루프는 가장 일반적인 유형의 루프 중 하나입니다. For 루프에는 For Next 및 For Each In Next의 두 가지 형식이 있습니다. For 루프는 일반적으로 항목 또는 번호 목록을 순차적으로 이동하는 데 사용됩니다.

주어진 지점에서 For 루프를 종료하려면 exit 문을 사용할 수 있습니다.

For 루프는 끝 조건을 충족 할 때까지 빙글 빙글 돌아갑니다. 종료 조건이 충족되면 프로그래밍 흐름은 자연스러운 방향으로 아래로 계속됩니다.

The For … Next loop has the following syntax:

For counter = start_counter To end_counter

'Do something here (your code)

Next counter

우리는 실제로 루프의 ‘시간 키퍼’로 변수 카운터를 사용하는 루프를 만들고 있습니다. 루프 시작 부분에서 start_counter와 같은 값으로 설정 한 다음 종료 조건을 충족 할 때까지 각 루프 동안 1 씩 증가시킵니다. 카운터 값이 end_counter와 같아 질 때까지 루프가 실행됩니다. 위의 두 값이 모두 일치하면 루프가 마지막으로 실행 된 다음 루프가 중지됩니다.

위의 모든 내용이 일부 사람들에게는 혼란 스러울 수 있으므로 몇 가지 예제를 통해 For Loop를 익히고 학습을 시작하겠습니다.

새 Excel 통합 문서를 만든 다음 확장자 .xlsm으로 저장합니다. Visual Basic 편집기 화면을 시작하려면 ALT + F11을 사용합니다. 새 모듈 삽입 VB 표준 모듈에 아래 코드를 복사합니다

img1

루프 1 (msgbox로 번호 표시)

Sub Loop1()

Dim StartNumber As Integer

Dim EndNumber As Integer

EndNumber = 5



For StartNumber = 1 To EndNumber

MsgBox StartNumber & " is " & "Your StartNumber"

Next StartNumber

End Sub

img2

코드 설명 :

VBA 코드는 StartNumber에 값을 할당해야합니다. 여기서 EndNumber는 루프의 시작점으로 정수로 선언 된 변수입니다.이 값은 임의의 숫자가 될 수 있으며 EndNumber는 5 StartNumber가 1에서 시작됨 For StartNumber = 1 To EndNumber 코드가 1 (StartNumber)에서 5 (EndNumber)까지 시작됨을 의미합니다.

  • MsgBox StartNumber & “is”& “Your StartNumber”는 다음 메시지 상자를 표시합니다

img3

Loop2 (값 채우기)

Sub Loop2()

'Fills cells A1:A56 with values of X by looping' --- Comment

'Increase value of X by 1 in each loop' --- Comment

Dim X As Integer

For X = 1 To 56

Range("A" & X).Value = X

Next X

End Sub

img4

코드 설명 :

우리는 X를 정수로 할당했습니다. For X = 1 ~ 56; 이것은 1로 시작하여 56까지 계속되며 매번 1 씩 증가합니다. * Range ( “A”& X) .Value = X; 이 줄은 X의 값을 저장하고 A1에서 A56까지의 범위를 통과합니다

img5

Loop3 (배경색으로 셀 채우기)

Sub Loop3()

' Fills cells B1:B56 with the 56 background colours' --- Comment

Dim X As Integer

For X = 1 To 56

Range("B" & X).Select

With Selection.Interior

.ColorIndex = X

.Pattern = xlSolid

End With

Next X

End Sub

img6

코드 설명 :

우리는 X를 정수로 할당했습니다. For X = 1에서 56은 1로 시작하여 56까지 계속됩니다. Range ( “B”& X) .Select; 이 줄은 X의 값을 저장하고 B56까지 셀 B1을 선택합니다. 다음 4 줄 즉, Selection.Interior는 내부 색상 색인을 선택하고 1이 검은 색에 속하도록 해당 색상 색인의 X에서 값을 가져옵니다. 2는 흰색에 속합니다. 빨간색 등의 경우 3

img7

루프 4 (2 씩 증가하는 값 채우기)

기본적으로 단계 값은 정방향 1이지만 1보다 큰 숫자로 설정할 수 있습니다.

Sub Loop4()

' Fills every second cell from C1:C50 with values of X' --- Comment

Dim X As Integer

For X = 1 To 50 Step 2

Range("C" & X).Value = X

Next X

End Sub

img8

코드 설명 :

우리는 X를 정수로 할당했습니다. For X = 1 ~ 50 Step 2; 이것은 X에서 1로 시작하여 50까지 매번 2 씩 증가합니다. * Range ( “C”& X) .Value = X; 이 줄은 X의 값을 저장하고 C1에서 C50까지의 범위로 전달됩니다

img9

루프 5 (STEP 명령을 사용하는 역방향 VBA For 루프)

For 루프의 카운터가 낮은 값에서 높은 값으로 만 이동할 필요는 없습니다. 대신 For 루프는 역방향으로 실행될 수 있습니다.

Step 값은 기본적으로 정방향 1이지만 역순으로 숫자로 설정할 수 있습니다.

Sub Loop5()

' Fills cells from D1:D50 with values of X' --- Comment

' In this case X decreases by 1' --- Comment

Dim X As Integer, Row As Integer

Row = 1



For X = 50 To 0 Step -1

Range("D" & Row).Value = X

Row = Row + 1

Next X

End Sub

img10

코드 설명 :

X & Row를 정수로 할당했습니다. Row는 값 1을 포함합니다. For X = 50 to 0 Step -1; 이것은 50에서 시작하여 X에서 1 씩 감소하여 0까지 Range ( “D”& Row) .Value = X; 이 줄은 X의 값을 저장하고 D1에서 D50까지의 범위를 통과합니다

img11

루프 6 (반전의 두 번째 셀마다 STEP-2로 채움)

위의 For 루프 예제에서 단계 및 순서를 사용하여 For 루프가 정방향 또는 역방향으로 작동하는지 확인할 수 있습니다.

Sub Loop6()

' Fills every second cell from E1:E100 with values of X' --- Comment

' In this case X decreases by 2' --- Comment

Dim X As Integer, Row As Integer

Row = 1

For X = 100 To 0 Step -2

Range("E" & Row).Value = X

Row = Row + 2

Next X

End Sub

img12

코드 설명 :

X & Row를 정수로 지정했습니다. Row는 값 1을 포함합니다. For X = 100 to 0 Step -2; 이것은 100에서 시작하여 X에서 2 씩 감소하여 0까지 Range ( “E”& Row) .Value = X; 이 줄은 X의 값을 저장하고 E1에서 E100까지의 범위로 전달됩니다

img13

루프 7 (IF 조건이있는 For 루프 : 특정 셀에서 시작하는 셀 채우기) X가 IF 조건을 충족 할 때까지 값 11로 셀 F11의 셀을 채 웁니다.

Sub Loop7()

' Starts to fill cells F11:F100 with values of X' --- Comment

' This will exit from the loop after 50' --- Comment

Dim X As Integer

For X = 11 To 100

Range("F" & X).Value = X

If X = 50 Then

MsgBox ("Bye Bye")

Exit For

End If

Next X

End Sub

img14

코드 설명 :

X를 정수로 할당했습니다. For X = 11 ~ 100; 조건이 * Range ( “F”& X)를 충족 할 때까지 X에서 1 씩 증가하는 11부터 시작합니다 .Value = X; 이 줄은 X 값을 저장하고 조건이

img15

를 충족 할 때까지 범위 F11로 전달됩니다. * F50 셀에 값 50을 입력하면 다음과 같은 메시지 상자가 표시됩니다

_ 블로그가 마음에 들면 Facebook에서 친구들과 공유하세요. Twitter와 Facebook에서도 팔로우 할 수 있습니다 ._

_ 우리는 여러분의 의견을 듣고 싶습니다. 우리가 작업을 개선, 보완 또는 혁신하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]_로 문의 해주세요