본문 바로가기
VBA/엑사남_기초방

[기초방] VBA 100제 #8 [ 데이터 영역 선택하기 ]

by 일등미노왕국 2023. 1. 4.

이 문제는 두개의 문제가 혼합되어 있다. 

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

기초방#8-1_특정값찾기.xlsm
0.02MB

댓글