본문 바로가기
벌어먹기/생계형 엑셀

엑셀 셀 클릭 매크로 연결하기 (VBA 문법 몰라도 되요^^)

by 나중된자 2019. 5. 9.
특정 셀을 클릭하면 매크로가 동작하는 예제를 같이 해 봅시다. 


1. 우선 Alt + F11 을 눌러서 VBA 편집창을 실행합니다.


2. 매크로 적용할 Sheet를 선택하여 더블 클릭하여 나온 창에 아래 코드를 Copy & Paste 합니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("b1")) Is Nothing Then
            Call 매크로이름
        End If
    End If
End Sub

3. 매크로 만드는 법은 아시죠? 혹시 모르시는 분이 계실까봐 간단히 아래에 설명하겠습니다

3-1) 개발 도구 > 매크로 기록을 클릭합니다. 


3-2) 매크로 이름을 기억하기 쉽게 작성하고 확인버튼을 클릭합니다. 


3-3) 이후에는 자신이 원하는 매크로 작업을 직접 시현하듯이 해주면 됩니다.  위의 예제에서는 셀의 항목으로 필터를 적용해 보여주는 간단한 작업입니다. 





4. 매크로 문법에서 '연습매크로'라는 이름의 매크로를 실행시키려면 아래와 같이 작성하면 됩니다.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("b1")) Is Nothing Then
            Call 연습매크로
        End If
    End If
End Sub
'b1'의 셀을 클릭하면 '연습매크로'가 자동 실행되는 것을 확인할 수 있습니다. 

5. 만약 여러셀을 동시에 작업하고 싶을 때는 아래 문법을 참고하여 소스코드를 작성해 주시면 엑셀 문서 사용이 정말 편리해 집니다.^^

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("e1")) Is Nothing Then
            Call 원화표시
        End If
        If Not Intersect(Target, Range("d2")) Is Nothing Then
            Call 오름정렬
        End If
        If Not Intersect(Target, Range("d1")) Is Nothing Then
            Call 내림정렬
        End If
        If Not Intersect(Target, Range("c1")) Is Nothing Then
            Call 수입보기
        End If
        If Not Intersect(Target, Range("b1")) Is Nothing Then
            Call 전체보기
        End If
        If Not Intersect(Target, Range("b4")) Is Nothing Then
            Call 지출_저축_투자
        End If
        If Not Intersect(Target, Range("b5")) Is Nothing Then
            Call 지출_주거
        End If
        If Not Intersect(Target, Range("b6")) Is Nothing Then
            Call 지출_식비
        End If
        If Not Intersect(Target, Range("b7")) Is Nothing Then
            Call 지출_생활용품
        End If
        If Not Intersect(Target, Range("b8")) Is Nothing Then
            Call 지출_의복_미용
        End If
        If Not Intersect(Target, Range("b9")) Is Nothing Then
            Call 지출_건강
        End If
        If Not Intersect(Target, Range("b10")) Is Nothing Then
            Call 지출_자기계발
        End If
        If Not Intersect(Target, Range("b11")) Is Nothing Then
            Call 지출_자동차
        End If
        If Not Intersect(Target, Range("b12")) Is Nothing Then
            Call 지출_육아
        End If
        If Not Intersect(Target, Range("b13")) Is Nothing Then
            Call 지출_보험
        End If
        If Not Intersect(Target, Range("b14")) Is Nothing Then
            Call 지출_이벤트
        End If
        If Not Intersect(Target, Range("b15")) Is Nothing Then
            Call 지출_섬김비
        End If
        If Not Intersect(Target, Range("b16")) Is Nothing Then
            Call 지출_헌금
        End If
        If Not Intersect(Target, Range("b17")) Is Nothing Then
            Call 지출_기부
        End If
        If Not Intersect(Target, Range("b18")) Is Nothing Then
            Call 지출_통신비
        End If
        If Not Intersect(Target, Range("b19")) Is Nothing Then
            Call 지출_기타
        End If
    End If
End Sub