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
반응형
'PROGRAMMING > EXCEL&ACCESS' 카테고리의 다른 글
[엑셀] 수식 표시하기 : 시트 전체, 선택한 셀, 특정 셀 (0) | 2025.02.19 |
---|---|
[엑셀 VBA] 매크로 안에서 매크로 호출하기 (연속으로 매크로 실행) (0) | 2025.02.18 |
[엑셀 VBA] 매크로 연습하기 (매크로 기록/상대참조로 기록) (0) | 2025.02.16 |
[엑셀 VBA] Dim 키워드 사용하기 (0) | 2025.02.16 |
[엑셀 VBA] 엑셀 VBA 기초 문법_변수의 개념 정리 (0) | 2025.02.15 |
댓글