1

これは、ワークブックのすべてのファイルで機能し、シートが表示されている場合はすべてのシートでマクロラップを実行するマクロです。マクロの実行中に進行状況を示す進行状況バーを表示したかった..

Sub execute()
Application.ScreenUpdating = False
Application.Cursor = xlWait
' makes sure that the statusbar is visible
Application.DisplayStatusBar = True
'add your message to status bar
Application.StatusBar = "Formatting Report..."
userform1.show

    Call Delete_EmptySheets
    Dim WS_Count As Integer
    Dim i As Worksheet

 ' Set WS_Count equal to the number of worksheets in the active
 ' workbook.

 WS_Count = ActiveWorkbook.Worksheets.Count

' Begin the loop.

For Each i In Worksheets
If Not i.Visible = xlSheetVeryHidden Then
  i.Select
  Call wrap
End If
Next i

Application.Cursor = xlDefault
' gives control of the statusbar back to the programme
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

同じために、ラベル付きのユーザーフォームを使用しましたが、マクロ実行の前後にのみ実行されます

Private Sub UserForm_Activate()
 Call ShowProgressBarWithoutPercentage
End Sub

Sub ShowProgressBarWithoutPercentage()
Dim Percent As Integer
Dim PercentComplete As Single
Dim MaxRow, MaxCol As Integer
Dim iRow, iCol As Integer
MaxRow = 500
MaxCol = 500
Percent = 0
'Initially Set the width of the Label as Zero
UserForm1.Label1.Width = 0
For iRow = 1 To MaxRow
    For iCol = 1 To MaxCol
        Worksheets("Sheet1").Cells(iRow, iCol).Value = iRow * iCol

    Next
    PercentComplete = iRow / MaxRow
    UserForm1.Label1.Width = PercentComplete * UserForm1.Width

Next
Unload UserForm1
End Sub

マクロがバックグラウンドで実行されているときにプログレスバーを表示する方法を誰かが示すことができますか?

4

1 に答える 1

3

問題はあなたの可能性がありますApplication.ScreenUpdating = False。画面を定期的に更新することもできますが、最初から設定しておくメリットがなくなる可能性がありますFalse。ただし、ステータス バーは引き続き更新されるため、次のような内容をステータス バーに書き込むことができます。

0%  |
10% ||||||

そして、マクロの実行時にそれを更新します。

25%  ||||||||||||||
...
50%  ||||||||||||||||||||||||||||
...
100% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||

次に例を示します。

Sub StatusBarPercent(Percent As Double)
    Dim i As Long
    Dim Status As String
    Percent = Percent * 100
    Status = "Formatting Report...  " & Percent & "% "
    For i = 0 To Percent
        Status = Status & "|"
    Next
    Application.StatusBar = Status
End Sub
于 2012-10-30T09:47:27.560 に答える