ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Excel 매크로 (VBA) - 007. 변수에 저장되어 있는 데이터 확인하기 (디버그 기능)
    Excel/Excel 매크로 2022. 8. 21. 11:50
    728x90

    전체 목차

     - 001. 특정 행을 복사하여 삽입하기

     - 002. 선택하여 붙여 넣기 기능 정리

     - 003. 변수/Assignment/Loop/비교

     - 004. 데이터가 있는 셀의 범위 알아내기

     - 005. 데이터 시트(쉘) 순회하기

     - 006. 셀 병합 하기

     - 007. 변수에 저장되어 있는 데이터 확인하기 (디버그 기능)

     

    포스트 목차

      - 01. 개요

      - 02. MsgBox로 확인

      - 03. Cell에 데이터 삽입하여 확인

      - 04. Debug.Print로 확인

      - 05. 디버그 메뉴 이용(지역 창)

      - 06. 디버그 메뉴 이용(조사 식)

      

    01. 개요

       프로그래밍을 하다보면 변수에 저장되는 값들을 확인할 일들이 발생한다. 

        - 이런식으로 연산을 했을때 값이 제대로 들어가는지?

        - 변수는 어떤 형식인지?

        - 왜 원하는 결과가 안나오는지?

       이런 의문들을 해결하기 위해서는 프로그래밍 과정에서 발생하는 중간 결과물을 계속적으로 확인해야한다.

       본 포스트에서는 중간 결과물을 확인하는 여러 방법을 소개한다.

      

       다음과 같은 간단한 엑셀 시트가 있다고 가정하자. A1에는 3, A2에는 2가 저장되어 있다.

    다음 코드는 Integer 형 변수 a, b, c를 선언하고, a에는 A1셀에 있는 3을 저장하고, b에는 A2셀에 있는 2를 저장한 후, c에는 a+b의 값을 저장하는 Sub 프로시저이다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Tester()
            
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        
        a = Windows.Application.ActiveSheet.Cells(11).Value
        b = Windows.Application.ActiveSheet.Cells(11).Value
        c = a + b
     
    End Sub
     
    cs

    c에는 5가 저장될 것이다. 이제 c에 저장된 값을 확인하는 여러 방법을 알아보자.

     

    02. MsgBox로 확인

    MsgBox는 엑셀에서 메시지 박스를 띄운 후, 특정 내용을 보여주며, 사용자가 메시지 박스에 있는 확인 버튼을 누를때 까지 코드의 실행을 잡아두는 기능을 한다. 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Tester()
            
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        
        a = Windows.Application.ActiveSheet.Cells(11).Value
        b = Windows.Application.ActiveSheet.Cells(11).Value
        c = a + b
        
        MsgBox (c)
     
    End Sub
     
    cs

    실행 화면은 다음과 같다.

       간단하게 값을 확인하기 좋은 방법이다. 

     

    03. Cell에 데이터 삽입하여 확인

    매크로는 결국 셀에 데이터를 삽입하기 위해 실행하는 경우가 많다. 경우에 따라 중간 결과물을 미리 집어넣어 보는것도 가능할 것이다. 다음 코드 처럼  A3셀에 저장하여 확인할 수도 있을 것이다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Tester()
            
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        
        a = Windows.Application.ActiveSheet.Cells(11).Value
        b = Windows.Application.ActiveSheet.Cells(11).Value
        c = a + b
        
        ActiveSheet.Cells(31).Value = c
     
    End Sub
     
    cs

    실행 후 결과는 다음과 같다.

     

    04. Debug.Print로 확인

    Debug.Print함수를 이용하면, 변수에 저장되는 값을 "직접실행" 창에서 확인할 수 있다.

    (1) 직접실행 창 활성화 방법

     Visual Basic 편집기에서 보기>직접 실행 창 을 클릭하여 활성화 한다.

    (2)  Debug.Print 함수 예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Tester()
            
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        
        a = Windows.Application.ActiveSheet.Cells(11).Value
        b = Windows.Application.ActiveSheet.Cells(11).Value
        c = a + b
        
        Debug.Print (c)
     
    End Sub
     
    cs

    Debug.Print (변수명)으로 실행 가능하며, 다음과 같은 결과를 직접실행 창에서 확인할 수 있다.

     

     

    05. 디버그 메뉴 이용(지역)

    디버그 기능을 이용하면, 코드를 특정 시점까지만 실행하거나, 한줄씩 실행하는 것이 가능하다.

    지역변수의 내용을 보여주는 지역 창을 먼저 활성화 해보자.

     

    지역창을 활성화 한 후에 "04.Debug.Print로 확인"에서 사용한 코드를 한 줄씩 실행시켜 보자. 디버그 메뉴의 한 단계씩 코드 실행( 단축키  F8)을 이용하여 한 줄씩 실행하는 것이 가능하다.

      - 커서까지 실행을 누르면 현재 커서 위치까지 실행이 된다. 

      - 특정 라인에 중단점을 추가하면 중단점까지 실행이 된다.

     

     개발 창에서F8을 누러서 한줄씩 코드를 실행한다. c = a + b 에서 멈춰 있을 때는 아직 해당 라인이 실행된 것이 아니기 때문에 c에 0이 들어가 있는 것을 확인할 수 있다.  여기서 한줄 더 실행하면 c = a + b가 실행되고 c에 5라는 값이 들어간다는 것을 지역 창을 통해 확인할 수 있다.

     

     

     

    06. 디버그 메뉴 이용(조사식)

     

    이번에는 조사식을 이용해보자. 보기> 조사식 창을 클릭하여 조사식 창을 활성화 한다.

     

    조사식 부분에 c를 입력한다.

    아직 실행을 하지 않았기 때문에 값은 없는 상태이다.

    F8을 눌러서 한줄씩 실행해보자. 

     

    c = a + b 코드가 실행되면 조사식 창에 값이 5로 변경되는것을 확인할 수 있다. 

     

    지금까지 변수에 저장되어 있는 값을 확인할 수 있는 다양한 방법을 다뤘다. 

    728x90
Designed by Tistory.