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
로, ScreenUpdating
을 False
로, EnableEvents
를 False
로 설정합니다.
Update()
서브루틴은 수신하는 매개변수에 따라 진행 표시줄 표시를 편집합니다.
classend()
서브루틴은 DisplayStatusBar
, ScreenUpdating
및 EnableEvents
기능의 값을 재설정합니다.
클래스의 인스턴스를 만들려면 다음 코드를 사용합니다.
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
범위는 간격이 다른 진행률 표시줄에 대해 다른 디자인을 가집니다.
변수를 실험하여 사용자 정의 진행률 표시줄을 디자인하십시오.
결론
진행률 표시줄은 여러 작업이 병렬로 실행될 때 매우 유용합니다. 작업의 활동을 나란히 추적할 수 있습니다.
또한 다양한 작업에 필요한 시간도 측정할 수 있습니다. 이를 통해 이상적인 방식으로 작업을 예약할 수 있습니다.
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