이 문제는 두개의 문제가 혼합되어 있다.
1. 3행씩 반복하며 셀서식 적용하기
2. 한행에 300,000원이 단 한번만 있는 행에 셀 서식입히기
이번 문제를 풀면서 Bln의 스위칭 역할을 좀 더 활용해보도록 하겠다.
본인은 1번문제는 Bln값을 True로 잡았고 / 2번문제는 False로 잡았다.
그럼 이 스위칭의 조건을 어떡해 줄까 생각하다가 매크로 버튼의 텍스트의 변화에 따라 Bln값을 달리하면서 그 Bln 값의 변환에 따라 매크로가 각각의 조건의 맞게 실행하도록 하였다.
마지막엔 1번문제를 실행하였다면 1번이 True니까 False로 전환하고
2번문제는 False 이니까 True로 전환해주면 결국 스위칭 효과가 발생한다.
걸렸다!!
If bln = False Then
SH.TextFrame.Characters.Text = "Fill_Row"
Else
SH.TextFrame.Characters.Text = "Find_Money"
End If
bln = Not bln
더보기
Option Explicit
Sub 금액찾기()
Dim bln As Boolean
Dim SH As Shape: Set SH = ActiveSheet.Shapes("Button 1") '= 매크로 버튼
Dim rngX As Range: Set rngX = [c7] '= 이름을 순환할 변수
Dim rngAll As Range: Set rngAll = Range([c7], [c7].End(2).End(4)) '= 전체영역
Dim Num& '= 300,000 의 갯수 구할 변수
Haja_Start rngAll '= 전체영역 초기화
If SH.TextFrame.Characters.Text = "Fill_Row" Then bln = True '= 매크로 버튼이 [ Fill_Row ] Bln = true
Do Until rngX = "" '= rngX값이 더이상 없을 때까지 순환
If bln = False Then '= Bln이 거짓이면
Num = Application.WorksheetFunction.CountIf(rngX.Resize(1, 7), 300000) '= 해당행의 30만원의 갯수를 세서 Num 변수에 넣어라
If Num = 1 Then Haja_Go rngX.Resize(1, 7) '= 30만원이 유일한 하나이면 haja_Go 함수를 적용해라
Set rngX = rngX.Offset(1) '= 다음 행으로 이동
Else '= Bln이 true면
Haja_Go rngX.Resize(1, 7) '= 아무조건없이 Haja_Go 함수를 통한 셀 서식 적용
Set rngX = rngX.Offset(3) '= rngX를 3행아래로 이동
End If
Loop '= 모든 데이터를 모두 순환하였으면
If bln = False Then
SH.TextFrame.Characters.Text = "Fill_Row" '= 현재의 매크로 버튼과 반대로 스위칭
Else
SH.TextFrame.Characters.Text = "Find_Money"
End If
bln = Not bln
End Sub
Function Haja_Go(rngX As Range)
rngX.Interior.ColorIndex = 6
rngX.Font.Bold = True
End Function
Function Haja_Start(rngAll As Range)
rngAll.Interior.Color = xlNone
rngAll.Font.Bold = False
End Function
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #9 [ 데이터 영역 선택하기 ] (0) | 2023.01.05 |
---|---|
[기초방] VBA 100제 #7 [ 행렬변환 ] (2) | 2023.01.04 |
[기초방] VBA 100제 #6 [ 데이터 영역 스위칭 ] (0) | 2023.01.02 |
[기초방] VBA 100제 #5 [ 영역의 끝찾기 ] (0) | 2023.01.02 |
[기초방] VBA 100제 #3 [ 나를찾아줘 ] (4) | 2022.12.26 |
댓글