-
VBA 유튜브 학습기 3 - For, For each반복문 (feat. 파워 문과 기획자)공부하는 노예/VBA(유튜브 무료 강의) 2021. 3. 30. 08:39728x90
유튜버 엑사남 님 강의 3강 듣고 왔습니다!
걱정했던 것과 달리 아직은 할 만합니다.
따라서 코드를 작성할 때는 파워 납득인데, 막상 혼자 작성하려면 108 번뇌가 찾아오긴 하지만...
저는 아직 쪼렙이니까 일단 따라서 작성하고 이해하는 것만 해도 잘하는 거라고 정신 승리하고 있어요.🙄
3강에서 공부한 내용은 For~Next와 For Each ~ Next 반복문입니다.
코드를 작성하기에 앞서 짤막한 VBA 기본 지식 하나.
셀을 지정하는 방식은 두 가지입니다.(몇 개 더 있을지도 몰라요. 제가 아는 게 두 가지.....)
- Range("셀 주소")
- Cells(행 번호, 열 번호)
이 내용을 알아야 아래 내용이 손톱만큼이나마 더 이해가 빨리 되더라고요.
For ~ Next
1. 먼저 A열의 1행부터 9행까지. 즉, A1 셀부터 A9 셀까지를 1부터 9까지 숫자로 채우는 명령문입니다.
Sub V_number()
Dim i As Long
For i = 1 To 9
Cells(i,1) = i
Next
End SubCells(i,1) = i 가 이 반복문의 핵심인데요. (제 마음대로 뽑은 핵심)
i 값. 즉, 행 번호는 For문을 돌 때마다 1부터 9까지 증가하고, 열 번호는 1로 고정됩니다.
열을 1열(A열)에 고정해 두고 행 번호만 하나씩 늘려가는 거죠.
언제까지?
행 번호가 9가 될 때까지.
그 상태에서 셀 안에 값은 뭘로 채우느냐? i 값으로 채웁니다.
즉, 그 셀의 행 번호로 채우는 거죠.
저렇게 코드를 작성하고 실행해 보면 이렇게 셀이 채워집니다.
신기하잖아....😍
2. 이번엔 행을 1행으로 고정해 두고, 열만 9번째 열까지 늘려가면서 값을 채웁니다.
Sub H_number()
Dim i As Long
For i = 1 To 9
Cells(1,i) = i
Next
End Sub동작 원리는 위의 1번과 동일합니다.
다만 이번엔 행은 1행으로 고정해 두고, 열 값만 1부터 9까지 반복문을 도는 거죠.
코드를 작성하고 실행하면 아래와 같이 셀이 채워집니다.
중간에 과제를 내 주셔서 과제도 해 봤습니다.
[과제]
B2 셀부터 I9 셀까지 각각 각 행과 열의 값을 곱한 값이 계산돼 들어가게 하시오.(100점)
사실 이렇게만 내주셨으면 사경을 헤맬 뻔했는데, 힌트를 주시더라고요. 감사🙏
힌트를 듣고 작성해 봤습니다.
Sub gugudan_()
Dim i As Long
Dim j As Long
For i = 1 To 9
For j = 1 To 9
Cells(i, j) = i * j
Next
Next
End SubFor i = 1 To 9 'i는 1부터 9까지 순환합니다.
For j = 1 To 9 'j는 1부터 9까지 순환합니다.
Cells(i,j) = i * j 'i는 행 번호가 되고, j는 열 번호가 됩니다. 셀 안의 값은 i와 j를 곱한 값으로 채웁니다.
대충 이렇게 코드를 작성하고 확신없이 긴가민가하면서 실행해 보니까
휴ㅋㅋㅋ
제대로 들어갔네요🤩
이게 뭐라고 너무 뿌듯하더라고요.
이미 머리에 약간 과부하가 온 것 같지만 For Each ~ Next 반복문도 마저 배워 봅니다.
For each
이렇게 대충 도형이 널부러져 있고, 이 도형들을 B1 셀의 왼쪽에 맞춰 정렬한 후에 도형의 컬러를 각각 다른 컬러로 바꿔 보는 예제입니다.
여기까지 들었을 때 두 가지 감정이 들었어요.
"와.........개어려워."
"엑셀에서 이게 된다고?"
궁금하니까 얼른 코드를 따라서 써 봅니다.
음... For ~ Next까지는 그래도 대애애애애충이라도 이해하면서 따라 적었는데 여기서는 그냥 눈이 휘둥그레져서 일단 따라 적기 바빴습니다.
지구에 선생님과 저 둘만 남겨진 기분.
이 기분 마치 나머지 공부 [이미지 출처 : 언스플래쉬] 중간에 멘붕 올 뻔했는데 For Each ~ Next만 기억하면 된다고 하셔서 다시 정신줄 잡고 진행해 봅니다.
Sub Shape_color()
Dim sh As Object
Dim lngC As Long '색상 값 변수
For Each sh In ActiveSheet.Shapes '현재 시트에 있는 도형들을 순환하라
lngC = lngC + 1 'For문을 돌 때마다 색상 값이 1씩 증가해 각 도형은 각기 다른 색상을 띈다
sh.Left = Range("B1").Left 'sh의 왼쪽의 위치는 B1 셀의 왼쪽의 위치와 같다
sh.fill.ForeColor.SchemeColor = lngC
Next
End Sub네....
코드 옆에 주석 달아 놓은 대로 저런 내용의 코드라고 합니다.
핵심은 For Each ~ Next니까 대강 이해하고 실행해 봅니다.
짜라란
헐... 너무 신기해.👀
이런 엑셀의 신박한 기능들은 여직까지 모르고 살았다니 억울하기도 하고....(아직도 잘은 모름)
이제라도 알게 해 주신 엑사남 님께 감사한 마음도 들고 그랬습니다.
For Each ~ Next 구문에 대한 과제도 내주셨어요.
[과제]
위의 도형 정렬 및 컬러 채우기 결과값에 정렬된 도형들을 다시 G1 셀의 왼쪽에 맞춰 정렬하면서 각각이 가진 컬러값을 역순으로 바꾸시오. (500점)
이건 오히려 구구단보단 쉽게 느껴지더라고요.
잔머리로 살아온 짬이 있어서인지 글자 몇 개만 바꾸면 되겠구나 딱 감이 왔습니다.
컬러를 어떻게 다시 역순으로 바꾸는지에 대해서는 엑사남 님께서 힌트를 주셨어요.
힌트 없었으면 못 풀었음......
Sub Shape_Color()
Dim sh As Object
Dim lngC As Long
lngC = 6
For Each sh In ActiveSheet.Shapes
lngC = lngC - 1
sh.Left = Range("G1").Left
sh.Fill.ForeColor.SchemeColor = lngC
Next
End Sub이렇게 코드를 약간 수정해 작성하고.
이번에도 확신 없이 떨리는 마음으로 실행해 봤습니다.
!!!!!!!!!!!!!!!!!!!!!!!
뿌듯
그 어떤 때보다 뿌듯했습니다.
이제 3강 들었는데 내일이면 세상에서 제일 복잡한 명령문을 작성할 수 있을 거 같고 그렇네요.
자존감 회복에 큰 도움이 되는 공부인듯?
저는 4강 들으러 가겠습니다.
반응형'공부하는 노예 > VBA(유튜브 무료 강의)' 카테고리의 다른 글
VBA 유튜브 학습기 5 - 데이터의 마지막 행과 열 자동으로 찾기 (feat. 파워 문과 기획자) (0) 2021.04.01 VBA 유튜브 학습기 4 - IF문 + For문 (feat. 파워 문과 기획자) (0) 2021.03.31 VBA 유튜브 학습기 2 - 변수 설정 (feat. 파워 문과 기획자) (0) 2021.03.29 VBA 유튜브 학습기 1 - 메시지 박스(MsgBox) (feat. 파워 문과 기획자) (0) 2021.03.29 기획자(파워 문과) VBA 유튜브 학습기 Intro(feat. 유튜버 엑사남) (0) 2021.03.29