-
VBA 유튜브 학습기 4 - IF문 + For문 (feat. 파워 문과 기획자)공부하는 노예/VBA(유튜브 무료 강의) 2021. 3. 31. 08:52728x90
"여러분들한테 너무 많은 걸 한꺼번에 알려드리면 포기하게 되잖아." -엑사남 님-
네.... 맞아요.
배우는 자의 심리를 너무 잘 아시는 엑사남 님 덕분에 부담 없이 4강 달려 봅니다.
항상 엑사남 님께 감사한 마음으로 공부하고 있습니다.
[예제 1]
엑사남 님께서 올려 주신 예제 파일을 다운받아 공부했습니다. 지점_1에서 9까지 순환하면서 1월에 해당하는 값이 500미만인 셀의 글자색을 빨간색으로 바꾸고, D셀에 "저조"라고 표시하는 명령문을 알려 주신다네요.
느낌상으로는 함수를 어떻게 저떻게 하면 저 정도는 될 것 같은 느낌은 드는데...
뭐 어차피 함수도 되게 잘 아는 건 아니니까 VBA로 해결할 방법을 공부해 봅니다.
열심히 따라서 친 코드는 이렇습니다.
Sub test_()
Dim i As Long
For i = 3 To 11
If Range("C" & i) < 500 Then
Range("C" & i).Font.Color = 255
End If
Next
End Sub[나중에 기억 못할 나를 위해 쓰는 코드 해석]
For i = 3 To 11 'i는 3부터 11까지 순환합니다.
If Range("C" & i) < 500 Then 'C&i 셀. 즉, i가 3부터 11까지 순환하므로 C3 ~ C11이 되겠죠.
그 셀의 값이 500보다 작으면
Range("C" & i).Font.Color = 255 '셀의 폰트 컬러는 255 컬러로 설정한다.
코드를 실행해 보면
이렇게 C3~C11 셀 중에 값이 500 미만인 셀의 폰트 컬러가 빨간색(255 컬러)으로 바뀌었습니다.
여기에 더해서 C3~C11 셀 값이 500 미만인 셀은 옆의 D열에 "저조" 라고 표시하는 코드를 추가해 봅니다.
엑사남 님 강의 4강 짬 좀 찼다고 이건 대충 어떻게 해야 할지 감이 잡히더라고요.
이렇게 코드를 추가하고요.
Sub test_()
Dim i As Long
For i = 3 To 11
If Range("C" & i) < 500 Then
Range("C" & i).Font.Color = 255
Range("D" & i) = "저조"
End If
Next
End Sub실행해 봅니다.
잘은 모르지만 공부하다 보니까 어떤 때는 VBA 코드들이 엑셀 함수보다 쉬운 거 같은 기분도 들어요.
아마 얕게 공부한 현재 상태라 쉽게 나불거릴 수 있는 거겠죠. ㅋㅋㅋ
[예제 2]
이번엔 세로로 말고, 가로로 데이터 나열 형식을 바꿔서도 해 봅니다.
나열 형식 바뀌니까 휘둥그레....
응용력이 0에 수렴하는 문과의 약점을 간파하신듯 🥵
............... (생각의 버퍼링)
시간 버리지 않고 선생님 설명을 들어 봅니다.
Sub test_()
Dim i As Long
For i = 2 To 11
If Cells(3, i) < 500 Then
Cells(3, i).Font.Color = 255
Cells(4, i) = "저조"
End If
Next
End Sub예제 1번에서는 Range~ 였는데 여기선 왜 Cells인지 대충 감은 오거든요.
그런데 누가 왜 이런 거냐고 물으면 설명은 못하겠어요.
전 이해한 거 같으니까 넘어가 볼게요.
실행하면
행, 열 구조만 바뀌었을 뿐 예제 1번과 동일한 결과를 볼 수 있습니다.
[과제]
아래 C3~K11 셀 중 셀의 값이 500미만인 셀의 폰트 컬러를 변경하시오.(50점)
전에 배웠던 구구단 과제의 응용편이네요.
구구단 과제 열심히 했더니 이건 어떻게 할지 바로 알겠더라고요.
내가 이걸 어떻게 할지 감을 잡다니 내 자신 너무 대견한 것.
Sub homework()
Dim i As Long
Dim j As Long
For i = 3 To 11
For j = 3 To 11
If Cells(i, j) < 500 Then
Cells(i, j).Font.Color = 12611584
End If
Next
Next
End Sub위와 같이 코드를 작성하고 실행해 봤습니다.
항상 실행 전에는 확신은 없더라고요.
"이게 될까?" 하면서 실행.
휴😅
오류 날까 봐 쫄았는데 잘 되네요.
[예제 3]
그다음은 이렇게 도형이 Sheet 위에 널브러져 있고, 그 도형들의 컬러를 I열에 지정한 대로 바꾸는 법에 대한 건데요.
각 도형을 그린 다음에 이렇게 도형의 이름을 지정해 줘야 한다고 합니다.
컴활 2급에도 나오는 얘기랍니다.
저 컴활 2급있는데 왜 처음 듣죠....?
아무튼.... 이제라도 알았으면 됐죠, 뭐.
이건 어떻게 할지 감도 안 오니까 선생님을 따라 코드를 적어 봅니다.
Sub Test_1()
Dim sh As Object
For Each sh In ActiveSheet.Shapes
If sh.Name = "타원" Then
sh.Fill.ForeColor.RGB = Range("I3").Interior.Color
ElseIf sh.Name = "사각형" Then
sh.Fill.ForeColor.RGB = Range("I4").Interior.Color
ElseIf sh.Name = "삼각형" Then
sh.Fill.ForeColor.RGB = Range("I5").Interior.Color
End If
Next
End Sub네... 복잡하네요?
복잡한데... 또 막상 한 줄, 한 줄 읽으면 VBA 코드가 마치 대화하듯 적혀 있어서 대강 이해는 가더라고요.
예를 들어
sh.Fill.ForeColor.RGB = Range("I3").Interior.Color
같은 경우에도 도형(sh)을 채운다(Fill) 컬러의(ForeColor) RGB값을(RGB)
뭘로?
I3 셀의(Range("I3")) 셀에 채워진 컬러로(Interior.Color)
이렇게 대충 해석(?)은 되더라고요. 물론 백지 위에 그냥 쓰라고 하면 못해요....
* Interior.Color : 셀 채우기 컬러
코드를 다 작성했다면 버튼을 눌렀을 때 매크로가 동작할 수 있도록 버튼에 매크로를 지정해 줍니다.
버튼에서 오른쪽 버튼 누르고 [매크로 지정]을 누른 다음에
작성한 VBA 이름을 연결해 주면 됩니다.
이렇게 하고 버튼을 누르면
이렇게 도형의 컬러가 I열 셀 컬러로 바뀌었습니다.
하... 오늘도 하얗게 불태웠네요. (현재 오전 8시 50분)
아침마다 회사에 1시간씩 일부러 일찍 와서 VBA 공부를 하고 있는데...
얼른 제 실력이 떡상해서 이걸 실무에 촤라라락 이렇게 쓰는 날이 왔으면 좋겠어요.
내부 엑셀 데이터 중에 개선하고 싶은 데이터들이 많거든요.
그럼 전 이제 일하러.....😫
반응형'공부하는 노예 > VBA(유튜브 무료 강의)' 카테고리의 다른 글
VBA 유튜브 학습기 6 - 입력된 값이 변할 때마다 테이터에서 해당 값을 찾아 서식 적용하기 (0) 2021.04.02 VBA 유튜브 학습기 5 - 데이터의 마지막 행과 열 자동으로 찾기 (feat. 파워 문과 기획자) (0) 2021.04.01 VBA 유튜브 학습기 3 - For, For each반복문 (feat. 파워 문과 기획자) (0) 2021.03.30 VBA 유튜브 학습기 2 - 변수 설정 (feat. 파워 문과 기획자) (0) 2021.03.29 VBA 유튜브 학습기 1 - 메시지 박스(MsgBox) (feat. 파워 문과 기획자) (0) 2021.03.29