본문 바로가기
PROGRAMMING/EXCEL&ACCESS

[엑셀 VBA] 엑셀 VBA 조건문과 반복문

by Hey Nary 2025. 2. 17.
728x90
반응형


반복문 (For, While)

반복적인 작업을 자동화할 때 사용합니다.

엑셀 매크로 기록 자체는 '반복 실행' 기능이 없으므로 반복문을 구현하기 위해서는 코드로 작성해줘야 합니다.

For 문

포맷 : For ~ Next

'변수 선언
Dim 변수 As Integer

'반복문
For 변수 = 시작값 to 종료값 Step증감단위(생략가능)
	반복할 실행문
Next

 

😎매크로 코드 읽어보기

예제 : 숫자를 반복하고 반복 횟수를 출력하는 코드.

Dim i As Integer
For i = 1 To 5
    MsgBox "반복 횟수: " & i
Next i
  • Dim
    • 변수를 정의한다.
  • Msgbox "메시지"
    • "메시지"를 팝업으로 보여준다.

예제 : 파일 내 모든 시트에 대해 (반복) 메인 매크로를 실행하는 코드.

Sub 반복문_매크로()
'반복문
    For i = 1 To Sheets.Count
    Sheets(i).Select

'메인 매크로 코드 작성
    Range("A1").FormulaR1C1 = "날짜" 'A1셀에 날짜를 입력, [개체.속성=속성값]의 구조
    Range("B1").FormulaR1C1 = "습도"
    Range("C1").FormulaR1C1 = "온도"
'A열 텍스트 나누기로 날짜 데이터만 남기기, [개체.메서드 인수1, 인수2, ...]의 구조
    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(10, 9)), TrailingMinusNumbers:=True
'A~C열 너비 자동 맞춤
    Columns("A:C").EntireColumn.AutoFit
    Range("A1").Select
    
'반복문
    Next
End Sub
  • Range("A1").Select : A1 선택.

 

 

While 문

포맷 : While ~ Wend

Dim n As Integer
n = 1
While n <= 5
    MsgBox "현재 값: " & n
    n = n + 1
Wend

 

  • Wend : While문의 종료를 알려준다.

포맷 : Do While ~ Loop

Do While 조건
    ' 실행할 코드
Loop
  • 조건이 참인 동안 반복
    조건이 처음부터 거짓이면 한 번도 실행되지 않을 수도 있음
    반복문 안에서 조건이 변하지 않으면 무한 루프 발생 가능

조건문 (If 문)

조건에 따라 실행할 코드를 결정할 때 사용합니다.

 

포맷 :

If 조건 Then
    ' 실행할 코드
Elif 조건2 Then
    ' 실행할 코드
Else
    ' 모든 조건이 거짓일 때 실행할 코드
End If

 

😎매크로 코드 읽어보기

예제: 점수에 따라 다른 메세지를 팝업으로 띄우는 코드.

Dim 점수 As Integer
점수 = 80
If 점수 >= 70 Then
    MsgBox "합격입니다."
Else
    MsgBox "불합격입니다."
End If

 

 

예제 : C2가 채워져 있으면 편집이 완료되었음을 알리고 매크로를 종료, 비어 있으면 메인 매크로를 실행하는 코드.

Sub 주소록정리()

'1문장으로 짧게 입력하는 if 조건문, End If 필요 없음
'If Range("C2").Value <> "" Then Exit Sub 

'2문장 이상 입력하는 If 조건문, End If 필수
If Range("C2").Value <> "" Then  '현재 셀이 비어있지 않을 때까지 반복
    MsgBox "편집 완료된 시트입니다"
    Exit Sub
End If


Application.ScreenUpdating = False '화면 변화 과정을 보여주지 않는다. (시트 이동 등의 변경점이 있을 때


'메인 매크로
Range("B3").Select
    Do While ActiveCell.Value <> ""
    
    
    Selection.Cut Destination:=ActiveCell.Offset(-1, 1).Range("A1")
    ActiveCell.Offset(1, 1).Range("A1").Select
    Selection.Cut Destination:=ActiveCell.Offset(-2, 1).Range("A1")
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.Cut Destination:=ActiveCell.Offset(-3, 2).Range("A1")
    ActiveCell.Offset(-2, 0).Rows("1:3").EntireRow.Select
    Selection.Delete Shift:=xlUp
    ActiveCell.Offset(1, 1).Range("A1").Select

Loop
 
Application.ScreenUpdating = True '화면 변화 과정을 보여주기

MsgBox "작업 완료" '매크로가 끝나면 메시지 박스를 보여준다.


End Sub

 

  • Application.ScreenUpdating = True / False
    • True 이면 매크로가 실행되는 장면을 보여준다.
    • False 이면 매크로의 결과만 보여준다.
  • Range("셀").Select
    • 해당 셀을 선택한다.
  • Range("셀").Value
    • 해당 셀의 값을 읽는다.
728x90
반응형

댓글