엑셀 VBA 상태바 STATUSBAR 정보 출력하는 방법

엑셀(Excel)/VBA

엑셀 VBA 상태바 STATUSBAR 정보 출력하는 방법

 

환경: Microsoft Excel 2013

 

엑셀 화면 하단에는 상태 정보를 표시하는 곳이 있습니다. 엑셀에서 이루어지는 작업 진행 사항을 보여 주는 곳으로 VBA 에서도 제어가 가능합니다. 상태 정보를 표시할 수 있는 속성은 Application.STATUSBAR 입니다. Application 개체에 포함되어 있습니다. 오늘은 VBA 에서 매크로 함수의 진행 여부를 상태바에 표시하는 방법에 대해 알아 보겠습니다.

 

그림에서처럼 엑셀 화면에서 Application.STATUSBAR 속성으로 표시할 수 있는 곳은 화살표로 가리키는 곳입니다.

엑셀 VBA 상태바 STATUSBAR 정보 출력하는 방법

 

상태바에 매크로 함수의 진행 상태를 표시하기 위해 2For 문으로 반복문을 만들었습니다.

 

For i = 1 To 20

    For j = 1 To 5

       

    Next j

Next i

 

다음은 랜덤 값을 추출해서 엑셀 시트에 표현하기 위해서 RANDBETWEEN 함수를 사용하였습니다. 20 100 사이의 값 중 하나를 반환 받게 됩니다.

 

Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)

 

이제 For 문이 끝날 때 까지 매번 상태바에 진행 사항을 표시해야 합니다. 현재 For 문에서 몇 % 진행이 되었는지 per 에 저장하고 데이터 입력 중이라는 문자열과 함께 Application.STATUSBAR 속성에 저장합니다. 그럼 문자열은 상태바에 출력이 됩니다.

 

per = (i - 1) * 5 + (j * 1)

Application.STATUSBAR = "데이터 입력중.. " & per & "% 완료"

Application.Wait Now + TimeValue("00:00:01")

 

For 문이 끝나고 상태바에 입력이 종료 되면 원래 상태로 돌리기 위해 STATUSBAR False 로 세팅해 줘야 합니다.

 

Application.STATUSBAR = False

 

아래는 상태바에 정보를 출력하는 방법을 구현한 전체 매크로 함수에 대한 내용입니다. 실행한 결과는 그림 하단에 표시가 되어 있습니다.

 

Sub StatusBarInfo()

   

    Dim per As Integer

    Dim i As Integer, j As Integer

   

    For i = 1 To 20

        For j = 1 To 5

            Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)

            per = (i - 1) * 5 + (j * 1)

            Application.STATUSBAR = "데이터 입력중.. " & per & "% 완료"

            Application.Wait Now + TimeValue("00:00:01")

        Next j

    Next i

   

    Application.STATUSBAR = False

   

End Sub

 

엑셀 VBA 상태바 STATUSBAR 정보 출력하는 방법


Posted by 녹두장군