「开源系列」VBA:自制进度条

进度条只是在一定程度上提升用户体验,但VBA里并不能表现实际的处理进度,因为VBA是串行的单线程处理模式,无法进行并行处理,所以滚动条行进过程只是当前的弹出框,后续的处理必须弹出框的进度控制完事后并被销毁窗口后才可以走到下面的逻辑,所以形式上的进度条反而拖慢了处理的速度,但是给用户的感觉上更友好。

'*******************************************

'功能:自制进度条

'参数:无

'出力:进度条(VBA的单线程限制,无法并行处理)

'*******************************************

Sub ShowPercent()

    Dim i, j As Integer, k As String, arr As Variant    

    arr = Array(">", ">>", ">>>", ">>>>", ">>>>>", ">>>>>>", ">>>>>>>", ">>>>>>>>", ">>>>>>>>>", ">>>>>>>>>>>>>>>>>>")  

    k = "分析处理中,请稍候"   '提示的文字信息    

    j = 0    

    Form_wait.Show 0  '显示进度窗口    

    For i = 1 To 100 Step 0.05   '进度条行进速度    

        If j > UBound(arr) Then j = 0        

        Form_wait.Label4.Caption = k & arr(j)   '进度条样式        

        j = j + 1        

        Form_wait.Label2.Width = i / 100 * 200        

        Form_wait.Label3.Caption = Format(i, "0") & "%"        

        DoEvents   '转让控制权        

    Next i

    Unload Form_wait

End Sub

blob.png

Via: itker.me

标签