차례:
- A For-Next 예제
- 단계 값을 사용하여 For-Next 루프의 일부 카운터 값을 건너 뛸 수 있습니다. 아래의 예는 1과 1, 000 사이의 홀수 만 합산하기 위해 재 작성된 예입니다. Sub AddOddNumbers () Dim Double Cnt As Long Total = 0 Cnt = 1의 경우 1000 Step 2 Total = Total + Cnt Next Cnt MsgBox Total End Sub
- 다음 예제에서는 Exit For 문을 보여줍니다. 이 루틴은 워크 시트 수식에 사용하기위한 함수 프로 시저입니다.이 함수는 하나의 인수 (Str이라는 변수)를 받아들이고 첫 번째 숫자의 왼쪽에있는 문자를 반환합니다. 예를 들어 인수가 "KBR98Z"이면이 함수는 "KBR"을 반환합니다. "(999) 함수 TextPart (Str) IsNumeric (Mid (Str, i, 1))에 대해 i = 1이면 Long TextPart =" "로 텍스트 항목을 둡니다. 그런 다음 끝내기 TextPart = TextPart & Mid (Str, i, 1) End If 다음 i End Function
- 외부 루프
비디오: 엑셀 VBA 2016 기초강좌 인강 사용법교육 실무까지 배우기 2024
Excel VBA 프로그래밍에서 가장 단순한 루프 유형은 For-Next 루프입니다. 반복은 한 값에서 시작하여 다른 값에서 중지하는 카운터 변수에 의해 제어됩니다. For 문과 Next 문 사이의 문은 루프에서 반복되는 문입니다.
A For-Next 예제
다음 예제에서는 For-Next 루프를 사용하여 처음 1,000 개의 양수를 합산합니다. Total 변수는 0으로 시작합니다. 그런 다음 반복이 발생합니다. 변수 Cnt는 루프 카운터입니다. 1부터 시작하여 루프를 통해 매번 1 씩 증가합니다. Cnt가 1,000 일 때 루프가 끝납니다.
이 예제에는 루프 내에 하나의 명령문 만 있습니다. 이 문은 Cnt 값을 Total 변수에 추가합니다. 루프가 끝나면 MsgBox는 숫자의 합계를 표시합니다.
Sub AddNumbers () Double Dim Cnt As Long Cnt = 1의 경우 Cnt = 1의 경우 1000 Total = 총 + Cnt 다음 Cnt MsgBox 총 End Sub
루프 카운터가 일반 변수이기 때문에 다음과 같이 작성할 수 있습니다. 코드를 사용하여 For와 Next 문 사이의 코드 블록 내에서 값을 변경하십시오. 그러나 이것은 매우 나쁜 관행입니다.
단계 값을 사용하여 For-Next 루프의 일부 카운터 값을 건너 뛸 수 있습니다. 아래의 예는 1과 1, 000 사이의 홀수 만 합산하기 위해 재 작성된 예입니다. Sub AddOddNumbers () Dim Double Cnt As Long Total = 0 Cnt = 1의 경우 1000 Step 2 Total = Total + Cnt Next Cnt MsgBox Total End Sub
이번에 Cnt는 1부터 시작하여 3, 5, 7 등의 값을 취합니다. Step 값은 카운터가 증가되는 방법을 결정합니다. Cnt의 최고 값은 999가되기 때문에 상위 루프 값 (1000)은 실제로 사용되지 않습니다.
Step 값 3을 사용하는 또 다른 예제입니다.이 절차는 활성 시트와 함께 작동하며 밝은 회색 음영을 1 행부터 100 행까지 매 3 행에 적용합니다.
Sub ShadeEveryThirdRow) Dim i i = 1 ~ 100까지 Step 3 행 (i). 내부. Color = RGB (200, 200, 200) Next i End Sub이 매크로를 실행 한 결과를 확인하십시오.
루프를 사용하여 배경 음영을 행에 적용합니다.
For For Exit 문을 사용하는 For-Next 예제
For-Next 루프에는 루프 내에 하나 이상의 Exit For 문이 포함될 수도 있습니다. VBA가이 문을 발견하면 루프가 즉시 종료됩니다.다음 예제에서는 Exit For 문을 보여줍니다. 이 루틴은 워크 시트 수식에 사용하기위한 함수 프로 시저입니다.이 함수는 하나의 인수 (Str이라는 변수)를 받아들이고 첫 번째 숫자의 왼쪽에있는 문자를 반환합니다. 예를 들어 인수가 "KBR98Z"이면이 함수는 "KBR"을 반환합니다. "(999) 함수 TextPart (Str) IsNumeric (Mid (Str, i, 1))에 대해 i = 1이면 Long TextPart =" "로 텍스트 항목을 둡니다. 그런 다음 끝내기 TextPart = TextPart & Mid (Str, i, 1) End If 다음 i End Function
For-Next 루프는 1로 시작하고 문자열의 문자 수를 나타내는 숫자로 끝납니다. 이 코드는 VBA의 Mid 함수를 사용하여 루프 내에서 단일 문자를 추출합니다. 숫자 문자가 있으면 Exit For 문이 실행되고 루프가 너무 일찍 끝납니다.
문자가 숫자가 아닌 경우 반환 된 값 (함수 이름과 동일)에 추가됩니다. 루프가 모든 문자를 검사하는 유일한 시간은 인수로 전달 된 문자열에 숫자가없는 경우입니다.
중첩 된 For-Next 예제
루프에 원하는 수의 문을 포함하고 다른 For-Next 루프 내 For-Next 루프를 중첩 할 수 있습니다.
다음 예제에서는 중첩 된 For-Next 루프를 사용하여 12x5 행의 셀 범위에 난수를 삽입합니다. 루틴은
외부 루프
(Col 카운터가있는 루프)의 반복마다
내부 루프 (행 카운터가있는 루프)를 실행합니다. 즉, 루틴은 Cells (Row, Col) = Rnd 문을 60 번 실행합니다. 이 셀들은 중첩 된 For-Next 루프를 사용하여 채워졌다. Sub FillRange () 희미한 Col로 긴 희미한 행으로 Col = 1로 5로 Row = 1로 12 행 (행, 열) = Rnd 다음 행 다음 Col End Sub 다음 예제에서는 중첩 된 For를 사용합니다. -이 루틴은 값이 100 인 3 차원 배열을 초기화하기 위해 반복합니다.이 루틴은 모든 루프 (할당 문) 1, 000 번 (10 * 10 * 10)의 중간에서 다른 조합을 사용할 때마다 명령문을 실행합니다 (10, 10, 10) Dim MyArray (10, 10, 10) Dim i는 Long Dim j는 Long Dim k는 i = 1에서 10까지 j = 1에서 10까지 k = 1 ~ 10 MyArray (i, j, k) = 100 다음 k 다음 j 다음 i '기타 문은 여기에 있습니다. End Sub 다음은 중첩 된 For-Next 루프를 단계 값과 함께 사용하는 마지막 예제입니다. 이 절차는 교대 셀의 배경색을 변경하여 바둑판을 만듭니다.
루프를 사용하여 바둑판 패턴 만들기.행 계수기는 1에서 8까지 순환합니다. If-Then 구조는 사용할 중첩 된 다음 - 다음 구조를 결정합니다. 홀수 행의 경우 Col 카운터는 2로 시작합니다. 짝수 행의 경우 Col 카운터는 1로 시작합니다. 두 루프 모두 단계 값 2를 사용하므로 대체 셀이 영향을받습니다. 두 개의 추가 명령문은 셀을 사각형으로 만듭니다 (실제 바둑판처럼).
Sub MakeCheckerboard () Dim R을 길게, C를 길게 R = 1 ~ 8 WorksheetFunction 인 경우. IsOdd (R) Then C = 2에서 8 Step 2 셀 (R, C). 내부. Color = 255 Next C Else For C = 1 ~ 8 Step 2 셀 (R, C). 내부. Color = 255 Next C 다음 행 끝내기 R 행 ("1: 8").RowHeight = 35 열 ("A: H"). ColumnWidth = 6 5 End Sub