Excel VBA에서 진행률 표시줄 만들기

Bilal Shahid 2023년6월21일
  1. Microsoft Excel의 진행률 표시줄
  2. Excel에서 진행률 표시줄을 만드는 방법
  3. 결론
Excel VBA에서 진행률 표시줄 만들기

Visual Basic for Applications는 Microsoft 응용 프로그램에 사용되는 이벤트 기반 프로그래밍 언어입니다. 이를 통해 사용자는 작업을 자동화하고 요구 사항에 따라 여러 기능을 다시 작성할 수 있습니다.

VBA를 사용하면 매크로 형식으로 저장된 몇 가지 코드 문을 사용하여 사용자가 여러 작업을 수행할 수 있습니다. 매크로를 사용하면 사용자가 코드를 반복해서 재사용할 수 있습니다.

Microsoft Excel의 진행률 표시줄

데이터는 Microsoft Excel에서 지속적으로 조작됩니다. 데이터베이스에서 데이터를 업로드하고, 레코드를 조작하고, 결과를 요약하는 것은 특히 비즈니스에서 Microsoft Excel을 가장 일반적으로 사용하는 것입니다.

Microsoft Excel은 기본 기능의 도움으로 모든 작업을 수행할 수 있는 강력한 도구를 제공합니다. Microsoft Excel에서 제공하는 기본 기능을 구축하기 위해 VBA가 사용됩니다.

VBA는 다양한 작업을 자동화하는 탁월한 옵션입니다. 이를 통해 Microsoft Excel의 기본 기능을 기반으로 구축하고 필요에 맞는 프로그램을 만들 수 있습니다.

VBA에서 진행률 표시줄을 만드는 것은 매우 쉽습니다. 활동을 추적할 수 있습니다.

얼마나 많은 진행이 이루어졌는지 모니터링하고 병렬 작업을 실행할 수 있습니다. 진행률 표시줄을 사용하여 여러 작업을 동시에 추적할 수 있습니다.

진행률 표시줄을 조금만 추가해도 프로그램 효율성에 큰 차이를 만들 수 있습니다. 작업을 보다 효율적으로 수행할 수 있습니다.

Excel에서 진행률 표시줄을 만드는 방법

Microsoft Excel의 UserForm을 사용하면 progressbar 컨트롤을 사용하여 시트에 대한 진행률 표시줄을 만들 수 있습니다. 그러나 생성된 진행률 표시줄을 지속적으로 업데이트하려면 이 작업을 수행하는 몇 가지 코드 문을 연결해야 합니다.

이 문서에서는 Microsoft Excel에서 진행률 표시줄을 만드는 두 가지 방법에 대해 설명합니다.

번호가 매겨진 진행률 표시줄

멋진 진행률 표시줄을 만들고 싶지 않은 경우 이 솔루션이 이상적입니다. 번호가 매겨진 진행률 표시줄은 다음과 같은 방식으로 출력을 표시합니다.

번호가 매겨진 진행률 표시줄

Microsoft Excel에서 이 간단한 진행률 표시줄을 구현하려면 다음 코드를 사용하십시오.

Dim i As Integer

'Change the loop according to your requirements
For i = 1 To 1500
    'Perform the tasks here

    'Update the progress bar
    Application.StatusBar = "Progress: " & x & " of 1500: " & Format(x / 1500, "0%")

Next x

Application.StatusBar = False

번호가 매겨진 진행률 표시줄은 구현하기가 매우 쉽습니다. 많은 노력이 필요하지 않으며 완벽하게 작동합니다.

멋진 진행률 표시줄

이 솔루션은 멋진 진행률 표시줄을 디자인하려는 경우 이상적입니다. Excel의 StatusBar는 유니코드 문자를 사용하여 진행률 표시줄로 위장합니다.

9608에서 9615 범위의 유니코드 문자가 막대로 사용됩니다. 범위에서 하나의 문자를 선택할 수 있습니다.

진행률 표시줄의 길이는 코드의 lent 변수에 의해 정의됩니다.

' ProgressBar Class Module

Option Explicit

Private Const lent As Integer = 50
Private Const maxlent As Integer = 255
Private charBar As String
Private charSpace As String
Private statusBarVar As Boolean
Private enableEventsVar As Boolean
Private screenUpdatingVar As Boolean

Private Sub initialization()
    ' The initial state of the variables is saved for the progress bars
    charBar = ChrW(9608)
    charSpace = ChrW(9620)
    statusBarVar = Application.DisplayStatusBar
    enableEventsVar = Application.EnableEvents
    screenUpdatingVar = Application.ScreenUpdating
    Application.DisplayStatusBar = True
    Application.ScreenUpdating = False
    Application.EnableEvents = False
End Sub

Private Sub classend()
    ' Restore all the settings
    Application.DisplayStatusBar = statusBarVar
    Application.ScreenUpdating = screenUpdatingVar
    Application.EnableEvents = enableEventsVar
    Application.StatusBar = False
End Sub

Public Sub Update(ByVal Value As Long, _
                  Optional ByVal MaxValue As Long= 0, _
                  Optional ByVal Status As String = "", _
                  Optional ByVal DisplayPercent As Boolean = True)

    If Value < 0 Or MaxValue < 0 Or (Value > 100 And MaxValue = 0) Then Exit Sub

    ' If the maximum is set, then adjust the value to be in the range of 0 to 100
    If MaxValue > 0 Then Value = WorksheetFunction.RoundUp((Value * 100) / MaxValue, 0)

    ' Message to set the status bar to
    Dim display As String
    display = Status & "  "

    ' Set bars
    display = display & String(Int(Value / (100 / lent)), charBar)

    ' set spaces
    display = display & String(lent - Int(Value / (100 / lent)), charSpace)

    ' Closing character to show the end of the bar
    display = display & charBar

    If DisplayPercent = True Then display = display & "  (" & Value & "%)  "

    ' chop off to the maximum length if necessary
    If Len(display) > maxlent Then display = Right(display, maxlent)

    Application.StatusBar = display
End Sub

위에서 언급한 코드는 DisplayStatusBar 함수의 초기 값을 True로, ScreenUpdatingFalse로, EnableEventsFalse로 설정합니다.

Update() 서브루틴은 수신하는 매개변수에 따라 진행 표시줄 표시를 편집합니다.

classend() 서브루틴은 DisplayStatusBar, ScreenUpdatingEnableEvents 기능의 값을 재설정합니다.

클래스의 인스턴스를 만들려면 다음 코드를 사용합니다.

Dim fancyProgressBar As New ProgressBar
Dim i As Integer

For i = 1 To 100
    Call fancyProgressBar.Update(i, 100, "Progress Bar", True)
    ' Required tasks can be mentioned here
Next i

유니코드 문자를 사용하여 다양한 진행률 표시줄을 디자인할 수 있습니다. 9608에서 9615 범위는 간격이 다른 진행률 표시줄에 대해 다른 디자인을 가집니다.

변수를 실험하여 사용자 정의 진행률 표시줄을 디자인하십시오.

결론

진행률 표시줄은 여러 작업이 병렬로 실행될 때 매우 유용합니다. 작업의 활동을 나란히 추적할 수 있습니다.

또한 다양한 작업에 필요한 시간도 측정할 수 있습니다. 이를 통해 이상적인 방식으로 작업을 예약할 수 있습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub